From fdd0828014e486bdaf5ac597103deb7db1db4f51 Mon Sep 17 00:00:00 2001 From: Zane Staggs Date: Sat, 12 Jul 2025 22:59:17 -0700 Subject: [PATCH] fix dark mode setting being reset to light on settings app tab --- .../components/GooseSidebar/ThemeSelector.tsx | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/ui/desktop/src/components/GooseSidebar/ThemeSelector.tsx b/ui/desktop/src/components/GooseSidebar/ThemeSelector.tsx index 5cff742e12..f9499fb599 100644 --- a/ui/desktop/src/components/GooseSidebar/ThemeSelector.tsx +++ b/ui/desktop/src/components/GooseSidebar/ThemeSelector.tsx @@ -23,20 +23,21 @@ const ThemeSelector: React.FC = ({ }); const [isDarkMode, setDarkMode] = useState(() => { - // Always check the actual DOM state first to ensure consistency - const currentlyDark = document.documentElement.classList.contains('dark'); - if (currentlyDark !== undefined) { - return currentlyDark; - } - - // Fallback to calculating from theme mode - const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; + // First check localStorage to determine the intended theme const savedUseSystemTheme = localStorage.getItem('use_system_theme') === 'true'; - if (savedUseSystemTheme) { - return systemPrefersDark; - } const savedTheme = localStorage.getItem('theme'); - return savedTheme === 'dark'; + + if (savedUseSystemTheme) { + // Use system preference + const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; + return systemPrefersDark; + } else if (savedTheme) { + // Use saved theme preference + return savedTheme === 'dark'; + } else { + // Fallback: check current DOM state to maintain consistency + return document.documentElement.classList.contains('dark'); + } }); useEffect(() => {