Skip to content

Commit 372b21e

Browse files
committed
fix:本地存储的主题色与背景色与代码不兼容时导致页面崩溃
1 parent 59b31f5 commit 372b21e

3 files changed

Lines changed: 17 additions & 19 deletions

File tree

chat2db-client/src/hooks/useTheme.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,25 @@ import { ThemeType, PrimaryColorType } from '@/constants';
66
import { getPrimaryColor, getTheme, setPrimaryColor, setTheme } from '@/utils/localStorage';
77

88
const initialTheme = () => {
9-
let backgroundColor = getTheme() || ThemeType.Dark;
9+
const localStorageTheme = getTheme();
10+
const localStoragePrimaryColor = getPrimaryColor();
1011

11-
let primaryColor = getPrimaryColor() || PrimaryColorType.Golden_Purple;
12+
// 判断localStorage的theme在不在ThemeType中, 如果存在就用localStorageTheme
13+
let backgroundColor = ThemeType.Light
14+
if (Object.values(ThemeType).includes(localStorageTheme)) {
15+
backgroundColor = localStorageTheme;
16+
}
17+
18+
let primaryColor = PrimaryColorType.Golden_Purple
19+
if (Object.values(PrimaryColorType).includes(localStoragePrimaryColor)) {
20+
primaryColor = localStoragePrimaryColor;
21+
}
1222

1323
if (backgroundColor === ThemeType.FollowOs) {
1424
backgroundColor = getOsTheme();
1525
}
26+
document.documentElement.setAttribute('theme', backgroundColor);
27+
document.documentElement.setAttribute('primary-color', primaryColor);
1628
return {
1729
backgroundColor,
1830
primaryColor,

chat2db-client/src/layouts/index.tsx

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ function AppContainer() {
9898
// 初始化app
9999
function collectInitApp() {
100100
monitorOsTheme();
101-
initTheme();
102101
initLang();
103102
setInitEnd(true);
104103
}
@@ -119,19 +118,6 @@ function AppContainer() {
119118
};
120119
}
121120

122-
// 初始化主题
123-
function initTheme() {
124-
let theme = getTheme();
125-
if (theme === ThemeType.FollowOs) {
126-
theme =
127-
(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
128-
? ThemeType.Dark
129-
: ThemeType.Light) || ThemeType.Dark;
130-
}
131-
document.documentElement.setAttribute('theme', theme);
132-
document.documentElement.setAttribute('primary-color', getPrimaryColor());
133-
}
134-
135121
// 初始化语言
136122
function initLang() {
137123
if (!getLang()) {

chat2db-client/src/utils/localStorage.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ export function setLang(lang: LangType) {
1010
}
1111

1212
export function getTheme(): ThemeType {
13-
const themeColor:any = localStorage.getItem('theme') as ThemeType
14-
if(themeColor){
13+
const themeColor: any = localStorage.getItem('theme') as ThemeType
14+
if (themeColor) {
1515
return themeColor
1616
}
1717
localStorage.setItem('theme', ThemeType.Light)
@@ -25,7 +25,7 @@ export function setTheme(theme: ThemeType) {
2525

2626
export function getPrimaryColor(): PrimaryColorType {
2727
const primaryColor = localStorage.getItem('primary-color') as PrimaryColorType
28-
if(primaryColor){
28+
if (primaryColor) {
2929
return primaryColor
3030
}
3131
localStorage.setItem('primary-color', PrimaryColorType.Golden_Purple)

0 commit comments

Comments
 (0)