in src/hooks/layout.ts [48:83]
export function useThemeMode() {
const {mode, set} = useContext(ThemeContext);
const {themeMode, save} = useContext(StorageContext);
// if storage changes thememode, let apply to themecontext
useEffect(() => {
Debug(
`Theme changed in storage. Now ${ThemeMode[themeMode]}.`,
'useThemeMode Hook',
'layout.ts:50',
);
set(themeMode);
}, [themeMode, set]);
const setThemeMode = useCallback(
async (modeStr: string) => {
const theme = ThemeMode[modeStr as keyof typeof ThemeMode];
set(theme);
await save({themeMode: theme});
},
[set, save],
);
const strMode = useMemo(() => {
switch (mode) {
case ThemeMode.DARK:
return 'dark';
case ThemeMode.LIGHT:
return 'light';
default:
const str = Appearance.getColorScheme() as string;
return str;
}
}, [mode]);
return {mode: strMode, type: ThemeMode[mode].toString(), setThemeMode};
}