From f0b04afa113060a542a7e42554b0e019a7e4e166 Mon Sep 17 00:00:00 2001 From: yusing Date: Wed, 19 Feb 2025 14:58:52 +0800 Subject: [PATCH] refactor and fix homepage override not correctly loaded --- internal/api/v1/favicon/favicon.go | 2 +- internal/api/v1/homepage_overrides.go | 4 ++-- internal/homepage/homepage.go | 4 ++-- internal/homepage/homepage_test.go | 2 +- internal/homepage/override_config.go | 20 ++++++-------------- internal/route/provider/provider.go | 3 ++- internal/route/route.go | 11 +++++------ 7 files changed, 19 insertions(+), 27 deletions(-) diff --git a/internal/api/v1/favicon/favicon.go b/internal/api/v1/favicon/favicon.go index 055c74f..20fa986 100644 --- a/internal/api/v1/favicon/favicon.go +++ b/internal/api/v1/favicon/favicon.go @@ -86,7 +86,7 @@ func GetFavIcon(w http.ResponseWriter, req *http.Request) { } var result *fetchResult - hp := r.HomepageConfig().GetOverride() + hp := r.HomepageConfig() if !hp.IsEmpty() && hp.Icon != nil { if hp.Icon.IconSource == homepage.IconSourceRelative { result = findIcon(r, req, hp.Icon.Value) diff --git a/internal/api/v1/homepage_overrides.go b/internal/api/v1/homepage_overrides.go index f9d6448..6c3d303 100644 --- a/internal/api/v1/homepage_overrides.go +++ b/internal/api/v1/homepage_overrides.go @@ -71,9 +71,9 @@ func SetHomePageOverrides(w http.ResponseWriter, r *http.Request) { return } if params.Value { - overrides.UnhideItems(params.Which...) + overrides.UnhideItems(params.Which) } else { - overrides.HideItems(params.Which...) + overrides.HideItems(params.Which) } case HomepageOverrideCategoryOrder: var params HomepageOverrideCategoryOrderParams diff --git a/internal/homepage/homepage.go b/internal/homepage/homepage.go index beda6ef..67f0116 100644 --- a/internal/homepage/homepage.go +++ b/internal/homepage/homepage.go @@ -56,8 +56,8 @@ func (item *Item) IsEmpty() bool { return item == nil || item.IsUnset || item.ItemConfig == nil } -func (item *Item) GetOverride() *Item { - return overrideConfigInstance.GetOverride(item) +func (item *Item) ApplyOverride() *Item { + return overrideConfigInstance.ApplyOverride(item) } func (c *Categories) Clear() { diff --git a/internal/homepage/homepage_test.go b/internal/homepage/homepage_test.go index 7bfc3a8..6428ba7 100644 --- a/internal/homepage/homepage_test.go +++ b/internal/homepage/homepage_test.go @@ -31,6 +31,6 @@ func TestOverrideItem(t *testing.T) { } overrides := GetOverrideConfig() overrides.OverrideItem(a.Alias, override) - overridden := a.GetOverride() + overridden := a.ApplyOverride() ExpectDeepEqual(t, overridden.ItemConfig, override) } diff --git a/internal/homepage/override_config.go b/internal/homepage/override_config.go index 6d8400c..040b531 100644 --- a/internal/homepage/override_config.go +++ b/internal/homepage/override_config.go @@ -64,24 +64,16 @@ 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() defer c.mu.RUnlock() itemOverride, hasOverride := c.ItemOverrides[item.Alias] if hasOverride { - clone := *item - clone.ItemConfig = itemOverride - clone.IsUnset = false - item = &clone + item.ItemConfig = itemOverride + item.IsUnset = false } 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 } @@ -92,7 +84,7 @@ func (c *OverrideConfig) SetCategoryOrder(key string, value int) { c.CategoryOrder[key] = value } -func (c *OverrideConfig) UnhideItems(keys ...string) { +func (c *OverrideConfig) UnhideItems(keys []string) { c.mu.Lock() defer c.mu.Unlock() 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() defer c.mu.Unlock() for _, key := range keys { diff --git a/internal/route/provider/provider.go b/internal/route/provider/provider.go index f75e8ba..ffdf049 100644 --- a/internal/route/provider/provider.go +++ b/internal/route/provider/provider.go @@ -87,7 +87,6 @@ func (p *Provider) MarshalText() ([]byte, error) { } func (p *Provider) startRoute(parent task.Parent, r *route.Route) gperr.Error { - r.FinalizeHomepageConfig() err := r.Start(parent) if err != nil { delete(p.routes, r.Alias) @@ -157,7 +156,9 @@ func (p *Provider) loadRoutes() (routes route.Routes, err gperr.Error) { } if r.ShouldExclude() { delete(routes, alias) + continue } + r.FinalizeHomepageConfig() } return routes, errs.Error() } diff --git a/internal/route/route.go b/internal/route/route.go index ffc7f63..2fbb543 100644 --- a/internal/route/route.go +++ b/internal/route/route.go @@ -369,15 +369,14 @@ func (r *Route) FinalizeHomepageConfig() { isDocker := r.Container != nil - hp := r.Homepage - if hp.IsEmpty() { - hp = homepage.NewItem(r.Alias) + if r.Homepage.IsEmpty() { + r.Homepage = homepage.NewItem(r.Alias) } - hp = hp.GetOverride() + + hp := r.Homepage hp.Alias = r.Alias hp.Provider = r.Provider - - r.Homepage = hp + hp = hp.ApplyOverride() var key string if hp.Name == "" {