export function useThemeMode()

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};
}