mirror of
https://github.com/yusing/godoxy.git
synced 2026-01-11 21:10:30 +01:00
Split the monolithic `internal/homepage` icons functionality into a structured package hierarchy: - `internal/homepage/icons/` - Core types (URL, Key, Meta, Provider, Source, Variant) - `internal/homepage/icons/fetch/` - Icon fetching logic (content.go, fetch.go, route.go) - `internal/homepage/icons/list/` - Icon listing and search (list_icons.go, list_icons_test.go) Moved icon-related code from `internal/homepage/`: - `icon_url.go` → `icons/url.go` (+ url_test.go) - `content.go` → `icons/fetch/content.go` - `route.go` → `icons/fetch/route.go` - `list_icons.go` → `icons/list/list_icons.go` (+ list_icons_test.go) Updated all consumers to use the new package structure: - `cmd/main.go` - `internal/api/v1/favicon.go` - `internal/api/v1/icons.go` - `internal/idlewatcher/handle_http.go` - `internal/route/route.go`
22 lines
285 B
Go
22 lines
285 B
Go
package icons
|
|
|
|
import "sync/atomic"
|
|
|
|
type Provider interface {
|
|
HasIcon(u *URL) bool
|
|
}
|
|
|
|
var provider atomic.Value
|
|
|
|
func SetProvider(p Provider) {
|
|
provider.Store(p)
|
|
}
|
|
|
|
func hasIcon(u *URL) bool {
|
|
v := provider.Load()
|
|
if v == nil {
|
|
return false
|
|
}
|
|
return v.(Provider).HasIcon(u)
|
|
}
|