diff --git a/apps/readest-app/src/store/themeStore.ts b/apps/readest-app/src/store/themeStore.ts index 24bb591a..a61d67c5 100644 --- a/apps/readest-app/src/store/themeStore.ts +++ b/apps/readest-app/src/store/themeStore.ts @@ -169,6 +169,9 @@ export const initSystemThemeListener = (appService: AppService) => { } else { systemIsDarkMode = mediaQuery.matches; } + if (typeof window !== 'undefined' && localStorage) { + localStorage.setItem('systemIsDarkMode', systemIsDarkMode ? 'true' : 'false'); + } useThemeStore.getState().handleSystemThemeChange(systemIsDarkMode); }; diff --git a/apps/readest-app/src/utils/style.ts b/apps/readest-app/src/utils/style.ts index 42280ca0..33fbf732 100644 --- a/apps/readest-app/src/utils/style.ts +++ b/apps/readest-app/src/utils/style.ts @@ -553,8 +553,8 @@ export const getThemeCode = () => { if (typeof window !== 'undefined') { themeColor = localStorage.getItem('themeColor') || 'default'; themeMode = localStorage.getItem('themeMode') || 'auto'; + systemIsDarkMode = localStorage.getItem('systemIsDarkMode') === 'true'; customThemes = JSON.parse(localStorage.getItem('customThemes') || '[]'); - systemIsDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches; } const isDarkMode = themeMode === 'dark' || (themeMode === 'auto' && systemIsDarkMode); let currentTheme = themes.find((theme) => theme.name === themeColor);