refactor and fix homepage override not correctly loaded

This commit is contained in:
yusing 2025-02-19 14:58:52 +08:00
parent 161cd84150
commit f0b04afa11
7 changed files with 19 additions and 27 deletions

View file

@ -86,7 +86,7 @@ func GetFavIcon(w http.ResponseWriter, req *http.Request) {
} }
var result *fetchResult var result *fetchResult
hp := r.HomepageConfig().GetOverride() hp := r.HomepageConfig()
if !hp.IsEmpty() && hp.Icon != nil { if !hp.IsEmpty() && hp.Icon != nil {
if hp.Icon.IconSource == homepage.IconSourceRelative { if hp.Icon.IconSource == homepage.IconSourceRelative {
result = findIcon(r, req, hp.Icon.Value) result = findIcon(r, req, hp.Icon.Value)

View file

@ -71,9 +71,9 @@ func SetHomePageOverrides(w http.ResponseWriter, r *http.Request) {
return return
} }
if params.Value { if params.Value {
overrides.UnhideItems(params.Which...) overrides.UnhideItems(params.Which)
} else { } else {
overrides.HideItems(params.Which...) overrides.HideItems(params.Which)
} }
case HomepageOverrideCategoryOrder: case HomepageOverrideCategoryOrder:
var params HomepageOverrideCategoryOrderParams var params HomepageOverrideCategoryOrderParams

View file

@ -56,8 +56,8 @@ func (item *Item) IsEmpty() bool {
return item == nil || item.IsUnset || item.ItemConfig == nil return item == nil || item.IsUnset || item.ItemConfig == nil
} }
func (item *Item) GetOverride() *Item { func (item *Item) ApplyOverride() *Item {
return overrideConfigInstance.GetOverride(item) return overrideConfigInstance.ApplyOverride(item)
} }
func (c *Categories) Clear() { func (c *Categories) Clear() {

View file

@ -31,6 +31,6 @@ func TestOverrideItem(t *testing.T) {
} }
overrides := GetOverrideConfig() overrides := GetOverrideConfig()
overrides.OverrideItem(a.Alias, override) overrides.OverrideItem(a.Alias, override)
overridden := a.GetOverride() overridden := a.ApplyOverride()
ExpectDeepEqual(t, overridden.ItemConfig, override) ExpectDeepEqual(t, overridden.ItemConfig, override)
} }

View file

@ -64,25 +64,17 @@ func (c *OverrideConfig) OverrideItems(items map[string]*ItemConfig) {
} }
} }
func (c *OverrideConfig) GetOverride(item *Item) *Item { func (c *OverrideConfig) ApplyOverride(item *Item) *Item {
c.mu.RLock() c.mu.RLock()
defer c.mu.RUnlock() defer c.mu.RUnlock()
itemOverride, hasOverride := c.ItemOverrides[item.Alias] itemOverride, hasOverride := c.ItemOverrides[item.Alias]
if hasOverride { if hasOverride {
clone := *item item.ItemConfig = itemOverride
clone.ItemConfig = itemOverride item.IsUnset = false
clone.IsUnset = false
item = &clone
} }
if show, ok := c.ItemVisibility[item.Alias]; ok { if show, ok := c.ItemVisibility[item.Alias]; ok {
if !hasOverride {
clone := *item
clone.Show = show
item = &clone
} else {
item.Show = show item.Show = show
} }
}
return item return item
} }
@ -92,7 +84,7 @@ func (c *OverrideConfig) SetCategoryOrder(key string, value int) {
c.CategoryOrder[key] = value c.CategoryOrder[key] = value
} }
func (c *OverrideConfig) UnhideItems(keys ...string) { func (c *OverrideConfig) UnhideItems(keys []string) {
c.mu.Lock() c.mu.Lock()
defer c.mu.Unlock() defer c.mu.Unlock()
for _, key := range keys { for _, key := range keys {
@ -100,7 +92,7 @@ func (c *OverrideConfig) UnhideItems(keys ...string) {
} }
} }
func (c *OverrideConfig) HideItems(keys ...string) { func (c *OverrideConfig) HideItems(keys []string) {
c.mu.Lock() c.mu.Lock()
defer c.mu.Unlock() defer c.mu.Unlock()
for _, key := range keys { for _, key := range keys {

View file

@ -87,7 +87,6 @@ func (p *Provider) MarshalText() ([]byte, error) {
} }
func (p *Provider) startRoute(parent task.Parent, r *route.Route) gperr.Error { func (p *Provider) startRoute(parent task.Parent, r *route.Route) gperr.Error {
r.FinalizeHomepageConfig()
err := r.Start(parent) err := r.Start(parent)
if err != nil { if err != nil {
delete(p.routes, r.Alias) delete(p.routes, r.Alias)
@ -157,7 +156,9 @@ func (p *Provider) loadRoutes() (routes route.Routes, err gperr.Error) {
} }
if r.ShouldExclude() { if r.ShouldExclude() {
delete(routes, alias) delete(routes, alias)
continue
} }
r.FinalizeHomepageConfig()
} }
return routes, errs.Error() return routes, errs.Error()
} }

View file

@ -369,15 +369,14 @@ func (r *Route) FinalizeHomepageConfig() {
isDocker := r.Container != nil isDocker := r.Container != nil
hp := r.Homepage if r.Homepage.IsEmpty() {
if hp.IsEmpty() { r.Homepage = homepage.NewItem(r.Alias)
hp = homepage.NewItem(r.Alias)
} }
hp = hp.GetOverride()
hp := r.Homepage
hp.Alias = r.Alias hp.Alias = r.Alias
hp.Provider = r.Provider hp.Provider = r.Provider
hp = hp.ApplyOverride()
r.Homepage = hp
var key string var key string
if hp.Name == "" { if hp.Name == "" {