fix: palette changes now propagate immediately via ThemeContext

Replace useSetting()-based useTheme() with a React context (ThemeProvider
+ useTheme/usePaletteControl). The context holds palette key in state so
pressing a palette button in Settings re-renders all screens instantly.
Persists to SQLite and reloads the stored value on mount.
This commit is contained in:
Davide Scaini
2026-04-25 15:45:27 +02:00
parent 91d747c54a
commit 2e520137ac
4 changed files with 60 additions and 16 deletions
-7
View File
@@ -1,5 +1,3 @@
import { useSetting } from '@/db/queries';
export type PaletteKey = 'auto' | 'default' | 'giro' | 'tour' | 'vuelta';
export const PALETTES = {
@@ -29,8 +27,3 @@ export function autoKey(): Exclude<PaletteKey, 'auto'> {
return 'default';
}
export function useTheme(): Theme {
const override = (useSetting('palette_override') ?? 'auto') as PaletteKey;
const key = override === 'auto' ? autoKey() : override;
return PALETTES[key as keyof typeof PALETTES] ?? PALETTES.default;
}