Refactor useSettings hook, parse with zod schema

This commit is contained in:
Alex Gleason
2024-02-13 23:20:18 -06:00
parent b0a82a23d0
commit ffdb744d16
40 changed files with 108 additions and 92 deletions

View File

@ -1,10 +1,10 @@
import { getSettings } from 'soapbox/actions/settings';
import { settingsSchema } from 'soapbox/schemas/soapbox/settings';
import { useAppSelector } from './useAppSelector';
import type { Map as ImmutableMap } from 'immutable';
/** Get the user settings from the store */
export const useSettings = (): ImmutableMap<string, any> => {
return useAppSelector((state) => getSettings(state));
export const useSettings = () => {
const data = useAppSelector((state) => getSettings(state));
return settingsSchema.parse(data.toJS());
};

View File

@ -8,12 +8,10 @@ type Theme = 'light' | 'dark';
* regardless of whether that's by system theme or direct setting.
*/
const useTheme = (): Theme => {
const settings = useSettings();
const { themeMode } = useSettings();
const systemTheme = useSystemTheme();
const userTheme = settings.get('themeMode');
const darkMode = userTheme === 'dark' || (userTheme === 'system' && systemTheme === 'dark');
const darkMode = themeMode === 'dark' || (themeMode === 'system' && systemTheme === 'dark');
return darkMode ? 'dark' : 'light';
};