mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-19 20:32:35 +02:00
updated implementation of (un)hiding items
This commit is contained in:
parent
37a166731d
commit
b9882f8985
2 changed files with 49 additions and 12 deletions
|
@ -6,12 +6,14 @@ import (
|
|||
|
||||
"github.com/yusing/go-proxy/internal/homepage"
|
||||
"github.com/yusing/go-proxy/internal/utils"
|
||||
"github.com/yusing/go-proxy/internal/utils/strutils"
|
||||
)
|
||||
|
||||
const (
|
||||
HomepageOverrideItem = "item"
|
||||
HomepageOverrideCategoryOrder = "category_order"
|
||||
HomepageOverrideCategoryName = "category_name"
|
||||
HomepageOverrideItemVisible = "item_visible"
|
||||
)
|
||||
|
||||
func SetHomePageOverrides(w http.ResponseWriter, r *http.Request) {
|
||||
|
@ -33,6 +35,13 @@ func SetHomePageOverrides(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
overrides.OverrideItem(which, &override)
|
||||
case HomepageOverrideItemVisible: // POST /v1/item_visible [a,b,c], false => hide a, b, c
|
||||
keys := strutils.CommaSeperatedList(which)
|
||||
if strutils.ParseBool(value) {
|
||||
overrides.UnhideItems(keys...)
|
||||
} else {
|
||||
overrides.HideItems(keys...)
|
||||
}
|
||||
case HomepageOverrideCategoryName:
|
||||
overrides.SetCategoryNameOverride(which, value)
|
||||
case HomepageOverrideCategoryOrder:
|
||||
|
|
|
@ -10,11 +10,12 @@ import (
|
|||
)
|
||||
|
||||
type OverrideConfig struct {
|
||||
ItemOverrides map[string]*ItemConfig `json:"item_overrides"`
|
||||
DisplayOrder map[string]int `json:"display_order"` // TODO: implement this
|
||||
CategoryName map[string]string `json:"category_name"`
|
||||
CategoryOrder map[string]int `json:"category_order"` // TODO: implement this
|
||||
mu sync.RWMutex
|
||||
ItemOverrides map[string]*ItemConfig `json:"item_overrides"`
|
||||
DisplayOrder map[string]int `json:"display_order"` // TODO: implement this
|
||||
CategoryName map[string]string `json:"category_name"`
|
||||
CategoryOrder map[string]int `json:"category_order"` // TODO: implement this
|
||||
ItemVisibility map[string]bool `json:"item_visibility"`
|
||||
mu sync.RWMutex
|
||||
}
|
||||
|
||||
var overrideConfigInstance *OverrideConfig
|
||||
|
@ -28,10 +29,11 @@ func must(b []byte, err error) []byte {
|
|||
|
||||
func InitOverridesConfig() {
|
||||
overrideConfigInstance = &OverrideConfig{
|
||||
ItemOverrides: make(map[string]*ItemConfig),
|
||||
DisplayOrder: make(map[string]int),
|
||||
CategoryName: make(map[string]string),
|
||||
CategoryOrder: make(map[string]int),
|
||||
ItemOverrides: make(map[string]*ItemConfig),
|
||||
DisplayOrder: make(map[string]int),
|
||||
CategoryName: make(map[string]string),
|
||||
CategoryOrder: make(map[string]int),
|
||||
ItemVisibility: make(map[string]bool),
|
||||
}
|
||||
err := utils.LoadJSONIfExist(common.HomepageJSONConfigPath, overrideConfigInstance)
|
||||
if err != nil {
|
||||
|
@ -64,6 +66,7 @@ func (c *OverrideConfig) OverrideItem(alias string, override *ItemConfig) {
|
|||
}
|
||||
|
||||
func (c *OverrideConfig) GetOverride(item *Item) *Item {
|
||||
orig := item
|
||||
c.mu.RLock()
|
||||
defer c.mu.RUnlock()
|
||||
itemOverride, ok := c.ItemOverrides[item.Alias]
|
||||
|
@ -72,9 +75,8 @@ func (c *OverrideConfig) GetOverride(item *Item) *Item {
|
|||
clone := *item
|
||||
clone.Category = catOverride
|
||||
clone.IsUnset = false
|
||||
return &clone
|
||||
item = &clone
|
||||
}
|
||||
return item
|
||||
} else {
|
||||
clone := *item
|
||||
clone.ItemConfig = itemOverride
|
||||
|
@ -82,8 +84,18 @@ func (c *OverrideConfig) GetOverride(item *Item) *Item {
|
|||
if catOverride, ok := c.CategoryName[clone.Category]; ok {
|
||||
clone.Category = catOverride
|
||||
}
|
||||
return &clone
|
||||
item = &clone
|
||||
}
|
||||
if show, ok := c.ItemVisibility[item.Alias]; ok {
|
||||
if item == orig {
|
||||
clone := *item
|
||||
clone.Show = show
|
||||
item = &clone
|
||||
} else {
|
||||
item.Show = show
|
||||
}
|
||||
}
|
||||
return item
|
||||
}
|
||||
|
||||
func (c *OverrideConfig) SetCategoryNameOverride(key, value string) {
|
||||
|
@ -97,3 +109,19 @@ func (c *OverrideConfig) SetCategoryOrder(key string, value int) {
|
|||
defer c.mu.Unlock()
|
||||
c.CategoryOrder[key] = value
|
||||
}
|
||||
|
||||
func (c *OverrideConfig) UnhideItems(keys ...string) {
|
||||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
for _, key := range keys {
|
||||
c.ItemVisibility[key] = true
|
||||
}
|
||||
}
|
||||
|
||||
func (c *OverrideConfig) HideItems(keys ...string) {
|
||||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
for _, key := range keys {
|
||||
c.ItemVisibility[key] = false
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue