-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Open
Description
后端在安装主题的时候会取消“跟随系统”(代码在提交7b66693中添加):
Lines 533 to 535 in d5d10dd
| // 安装集市主题后不跟随系统切换外观模式 | |
| model.Conf.Appearance.ModeOS = false | |
| model.Conf.Save() |
实际效果见录屏:
video.webm
需要取消“跟随系统”的情况应该只有:
- 当前是跟随系统、明亮模式,新安装仅支持暗黑模式的主题 → 取消“跟随系统”、切换到暗黑模式
- 当前是跟随系统、暗黑模式,新安装仅支持明亮模式的主题 → 取消“跟随系统”、切换到明亮模式
后端取消“跟随系统”之后,前端的 window.siyuan.config.appearance.modeOS 实际上还是 true ,需要刷新一下界面之后 window.siyuan.config.appearance.modeOS 才会变成 false,这是因为后端在修改配置文件并保存之后没有调用 util.BroadcastByType("main", "setAppearance", 0, "", Conf.Appearance)。
取消“跟随系统”应该移动到这个地方,跟修改外观模式一起执行:
Lines 426 to 439 in d5d10dd
| if !update { | |
| // 更新主题后不需要对该主题进行切换 https://github.com/siyuan-note/siyuan/issues/4966 | |
| if 0 == mode { | |
| Conf.Appearance.ThemeLight = themeName | |
| } else { | |
| Conf.Appearance.ThemeDark = themeName | |
| } | |
| Conf.Appearance.Mode = mode | |
| Conf.Appearance.ThemeJS = gulu.File.IsExist(filepath.Join(installPath, "theme.js")) | |
| Conf.Save() | |
| } | |
| InitAppearance() | |
| util.BroadcastByType("main", "setAppearance", 0, "", Conf.Appearance) |
要解决这个问题的话,需要前后端一起修改:
-
前端对当前模式进行判断,然后调用接口时传递 mode 和 modeOS 两个参数
p.s. 前端在安装新主题时传递了 mode 参数,还需要一个 modeOS 参数:
siyuan/app/src/config/bazaar.ts
Line 698 in 8d699f9
mode: dataObj.themeMode === "dark" ? 1 : 0, -
后端接受到参数之后就修改外观配置并保存(没参数就不修改),然后推送 setAppearance 到各个前端实例
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels