From c90d8b957723602072c502a1865fff19b8a1338e Mon Sep 17 00:00:00 2001 From: 777genius Date: Sun, 31 May 2026 08:12:15 +0300 Subject: [PATCH] perf(renderer): narrow theme store subscription --- src/renderer/hooks/useTheme.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/renderer/hooks/useTheme.ts b/src/renderer/hooks/useTheme.ts index 53321950..1c97e2bb 100644 --- a/src/renderer/hooks/useTheme.ts +++ b/src/renderer/hooks/useTheme.ts @@ -44,6 +44,12 @@ let systemThemeSnapshot: ResolvedTheme | null = null; let systemThemeQuery: MediaQueryList | null = null; const systemThemeListeners = new Set<() => void>(); +function selectConfiguredTheme(state: { + appConfig: { general?: { theme?: Theme } } | null; +}): Theme { + return state.appConfig?.general?.theme ?? 'system'; +} + function getSystemThemeSnapshot(): ResolvedTheme { systemThemeSnapshot ??= readCachedResolvedTheme() ?? readSystemResolvedTheme(); return systemThemeSnapshot; @@ -89,10 +95,7 @@ export function useTheme(): { isDark: boolean; isLight: boolean; } { - const appConfig = useStore((s) => s.appConfig); - - // Get configured theme - const configuredTheme: Theme = appConfig?.general?.theme ?? 'system'; + const configuredTheme = useStore(selectConfiguredTheme); const systemTheme = useSystemTheme(); const resolvedTheme = configuredTheme === 'system' ? systemTheme : configuredTheme;