diff --git a/database/init.db.go b/database/init.db.go index d87db52e..31372a30 100644 --- a/database/init.db.go +++ b/database/init.db.go @@ -54,7 +54,9 @@ func InitDB() { hideAdmin BOOLEAN, hideGithub BOOLEAN, hideToggleJumpTarget BOOLEAN, - jumpTargetBlank BOOLEAN + jumpTargetBlank BOOLEAN, + hideThemeSwitch BOOLEAN, + disableTimeBasedTheme BOOLEAN ); ` _, err = DB.Exec(sql_create_table) @@ -84,6 +86,14 @@ func InitDB() { if !columnExists("nav_setting", "hideToggleJumpTarget") { DB.Exec(`ALTER TABLE nav_setting ADD COLUMN hideToggleJumpTarget BOOLEAN;`) } + // 设置表表结构升级-隐藏主题切换按钮 + if !columnExists("nav_setting", "hideThemeSwitch") { + DB.Exec(`ALTER TABLE nav_setting ADD COLUMN hideThemeSwitch BOOLEAN;`) + } + // 设置表表结构升级-禁用时间主题切换 + if !columnExists("nav_setting", "disableTimeBasedTheme") { + DB.Exec(`ALTER TABLE nav_setting ADD COLUMN disableTimeBasedTheme BOOLEAN;`) + } // 默认 tools 用的 表 sql_create_table = ` @@ -246,12 +256,12 @@ func InitDB() { utils.CheckErr(err) if !rows.Next() { sql_add_setting := ` - INSERT INTO nav_setting (favicon, title, govRecord, logo192, logo512, hideAdmin, hideGithub, hideToggleJumpTarget, jumpTargetBlank) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?); + INSERT INTO nav_setting (favicon, title, govRecord, logo192, logo512, hideAdmin, hideGithub, hideToggleJumpTarget, jumpTargetBlank, hideThemeSwitch, disableTimeBasedTheme) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); ` stmt, err := DB.Prepare(sql_add_setting) utils.CheckErr(err) - res, err := stmt.Exec("favicon.ico", "Van Nav", "", "logo192.png", "logo512.png", false, false, false, true) + res, err := stmt.Exec("favicon.ico", "Van Nav", "", "logo192.png", "logo512.png", false, false, false, true, false, false) utils.CheckErr(err) _, err = res.LastInsertId() utils.CheckErr(err) diff --git a/service/settings.go b/service/settings.go index c8a0baae..80e3f307 100644 --- a/service/settings.go +++ b/service/settings.go @@ -8,9 +8,9 @@ import ( func GetSetting() types.Setting { sql_get_user := ` - SELECT id,favicon,title,govRecord,logo192,logo512,hideAdmin,hideGithub,hideToggleJumpTarget,jumpTargetBlank - FROM nav_setting - ORDER BY id ASC + SELECT id,favicon,title,govRecord,logo192,logo512,hideAdmin,hideGithub,hideToggleJumpTarget,jumpTargetBlank,hideThemeSwitch,disableTimeBasedTheme + FROM nav_setting + ORDER BY id ASC LIMIT 1; ` var setting types.Setting @@ -20,20 +20,24 @@ func GetSetting() types.Setting { var hideAdmin interface{} var hideToggleJumpTarget interface{} var jumpTargetBlank interface{} - err := row.Scan(&setting.Id, &setting.Favicon, &setting.Title, &setting.GovRecord, &setting.Logo192, &setting.Logo512, &hideAdmin, &hideGithub, &hideToggleJumpTarget, &jumpTargetBlank) + var hideThemeSwitch interface{} + var disableTimeBasedTheme interface{} + err := row.Scan(&setting.Id, &setting.Favicon, &setting.Title, &setting.GovRecord, &setting.Logo192, &setting.Logo512, &hideAdmin, &hideGithub, &hideToggleJumpTarget, &jumpTargetBlank, &hideThemeSwitch, &disableTimeBasedTheme) if err != nil { logger.LogError("获取配置失败: %s", err) return types.Setting{ - Id: 1, - Favicon: "favicon.ico", - Title: "Van Nav", - GovRecord: "", - Logo192: "logo192.png", - Logo512: "logo512.png", - HideAdmin: false, - HideGithub: false, - HideToggleJumpTarget: false, - JumpTargetBlank: true, + Id: 1, + Favicon: "favicon.ico", + Title: "Van Nav", + GovRecord: "", + Logo192: "logo192.png", + Logo512: "logo512.png", + HideAdmin: false, + HideGithub: false, + HideToggleJumpTarget: false, + JumpTargetBlank: true, + HideThemeSwitch: false, + DisableTimeBasedTheme: false, } } if hideGithub == nil { @@ -75,13 +79,33 @@ func GetSetting() types.Setting { } } + if hideThemeSwitch == nil { + setting.HideThemeSwitch = false + } else { + if hideThemeSwitch.(int64) == 0 { + setting.HideThemeSwitch = false + } else { + setting.HideThemeSwitch = true + } + } + + if disableTimeBasedTheme == nil { + setting.DisableTimeBasedTheme = false + } else { + if disableTimeBasedTheme.(int64) == 0 { + setting.DisableTimeBasedTheme = false + } else { + setting.DisableTimeBasedTheme = true + } + } + return setting } func UpdateSetting(data types.Setting) error { sql_update_setting := ` UPDATE nav_setting - SET favicon = ?, title = ?, govRecord = ?, logo192 = ?, logo512 = ?, hideAdmin = ?, hideGithub = ?, hideToggleJumpTarget = ?, jumpTargetBlank = ? + SET favicon = ?, title = ?, govRecord = ?, logo192 = ?, logo512 = ?, hideAdmin = ?, hideGithub = ?, hideToggleJumpTarget = ?, jumpTargetBlank = ?, hideThemeSwitch = ?, disableTimeBasedTheme = ? WHERE id = (SELECT id FROM nav_setting ORDER BY id ASC LIMIT 1); ` @@ -89,7 +113,7 @@ func UpdateSetting(data types.Setting) error { if err != nil { return err } - res, err := stmt.Exec(data.Favicon, data.Title, data.GovRecord, data.Logo192, data.Logo512, data.HideAdmin, data.HideGithub, data.HideToggleJumpTarget, data.JumpTargetBlank) + res, err := stmt.Exec(data.Favicon, data.Title, data.GovRecord, data.Logo192, data.Logo512, data.HideAdmin, data.HideGithub, data.HideToggleJumpTarget, data.JumpTargetBlank, data.HideThemeSwitch, data.DisableTimeBasedTheme) if err != nil { return err } diff --git a/types/types.go b/types/types.go index 85001073..35340bd5 100644 --- a/types/types.go +++ b/types/types.go @@ -2,16 +2,18 @@ package types // 默认是 0 type Setting struct { - Id int `json:"id"` - Favicon string `json:"favicon"` - Title string `json:"title"` - GovRecord string `json:"govRecord"` - Logo192 string `json:"logo192"` - Logo512 string `json:"logo512"` - HideAdmin bool `json:"hideAdmin"` - HideGithub bool `json:"hideGithub"` - HideToggleJumpTarget bool `json:"hideToggleJumpTarget"` - JumpTargetBlank bool `json:"jumpTargetBlank"` + Id int `json:"id"` + Favicon string `json:"favicon"` + Title string `json:"title"` + GovRecord string `json:"govRecord"` + Logo192 string `json:"logo192"` + Logo512 string `json:"logo512"` + HideAdmin bool `json:"hideAdmin"` + HideGithub bool `json:"hideGithub"` + HideToggleJumpTarget bool `json:"hideToggleJumpTarget"` + JumpTargetBlank bool `json:"jumpTargetBlank"` + HideThemeSwitch bool `json:"hideThemeSwitch"` + DisableTimeBasedTheme bool `json:"disableTimeBasedTheme"` } type Token struct { diff --git a/ui/src/components/Content/index.tsx b/ui/src/components/Content/index.tsx index ce17a538..627a7b95 100644 --- a/ui/src/components/Content/index.tsx +++ b/ui/src/components/Content/index.tsx @@ -35,7 +35,16 @@ const Content = (props: any) => { const hide = data?.setting?.hideGithub === true return !hide; }, [data]) - + + const showThemeSwitch = useMemo(() => { + const hide = data?.setting?.hideThemeSwitch === true + return !hide; + }, [data]) + + const disableTimeBasedTheme = useMemo(() => { + return data?.setting?.disableTimeBasedTheme === true + }, [data]) + const loadData = useCallback(async () => { try { setLoading(true); @@ -228,7 +237,12 @@ const Content = (props: any) => { {data?.setting?.govRecord ?? ""} {showGithub && } - +