fix handle system theme

This commit is contained in:
DefectingCat
2023-11-10 10:46:25 +08:00
parent 91ea0280fb
commit 6f6f24a050
2 changed files with 24 additions and 8 deletions

View File

@ -10,17 +10,33 @@ const DarkModeBtn = () => {
const { mounted } = useMounted();
const { theme, setTheme } = useTheme();
const handleTheme = (type: 'latte' | 'mocha') => () => {
const media = window.matchMedia(MEDIA);
const map = {
light: 'latte',
dark: 'mocha',
};
const system = media.matches ? 'dark' : 'light';
setTheme(type);
if (map[system] === type) {
try {
window.localStorage.removeItem('rua-theme');
} catch (err) {}
}
};
const handleMediaQuery = useCallback(
(e: MediaQueryListEvent | MediaQueryList) => {
const isDark = e.matches;
if (isDark) {
setTheme('mocha');
} else {
setTheme('latte');
}
try {
const localTheme = window.localStorage.getItem('rua-theme');
if (localTheme) return;
if (isDark) {
setTheme('mocha');
} else {
setTheme('latte');
}
window.localStorage.removeItem('rua-theme');
} catch (err) {}
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[],