提交 | 用户 | age
|
46e087
|
1 |
/** |
V |
2 |
* Application configuration |
|
3 |
*/ |
4d2fb0
|
4 |
import type { ProjectConfig } from '#/config'; |
46e087
|
5 |
|
4d2fb0
|
6 |
import { PROJ_CFG_KEY } from '@/enums/cacheEnum'; |
X |
7 |
import projectSetting from '@/settings/projectSetting'; |
f6cef1
|
8 |
|
4d2fb0
|
9 |
import { updateDarkTheme } from '@/logics/theme/dark'; |
X |
10 |
import { updateHeaderBgColor, updateSidebarBgColor } from '@/logics/theme/updateBackground'; |
|
11 |
import { updateColorWeak } from '@/logics/theme/updateColorWeak'; |
|
12 |
import { updateGrayMode } from '@/logics/theme/updateGrayMode'; |
2f6253
|
13 |
|
4d2fb0
|
14 |
import { useAppStore } from '@/store/modules/app'; |
X |
15 |
import { useLocaleStore } from '@/store/modules/locale'; |
f6cef1
|
16 |
|
4d2fb0
|
17 |
import { getCommonStoragePrefix, getStorageShortName } from '@/utils/env'; |
f6cef1
|
18 |
|
4d2fb0
|
19 |
import { ThemeEnum } from '@/enums/appEnum'; |
X |
20 |
import { deepMerge } from '@/utils'; |
|
21 |
import { Persistent } from '@/utils/cache/persistent'; |
2f6253
|
22 |
|
4ff6b7
|
23 |
// Initial project configuration |
46e087
|
24 |
export function initAppConfigStore() { |
215d8b
|
25 |
const localeStore = useLocaleStore(); |
V |
26 |
const appStore = useAppStore(); |
57ff03
|
27 |
let projCfg = Persistent.getLocal<ProjectConfig>(PROJ_CFG_KEY); |
15567e
|
28 |
projCfg = deepMerge(projectSetting, projCfg || {}); |
5b8eb4
|
29 |
const darkMode = appStore.getDarkMode; |
V |
30 |
const { |
|
31 |
colorWeak, |
|
32 |
grayMode, |
|
33 |
|
|
34 |
headerSetting: { bgColor: headerBgColor } = {}, |
|
35 |
menuSetting: { bgColor } = {}, |
|
36 |
} = projCfg; |
2f6253
|
37 |
try { |
陈 |
38 |
grayMode && updateGrayMode(grayMode); |
|
39 |
colorWeak && updateColorWeak(colorWeak); |
|
40 |
} catch (error) { |
|
41 |
console.log(error); |
|
42 |
} |
215d8b
|
43 |
appStore.setProjectConfig(projCfg); |
5b8eb4
|
44 |
|
V |
45 |
// init dark mode |
|
46 |
updateDarkTheme(darkMode); |
|
47 |
if (darkMode === ThemeEnum.DARK) { |
|
48 |
updateHeaderBgColor(); |
|
49 |
updateSidebarBgColor(); |
|
50 |
} else { |
|
51 |
headerBgColor && updateHeaderBgColor(headerBgColor); |
|
52 |
bgColor && updateSidebarBgColor(bgColor); |
|
53 |
} |
|
54 |
// init store |
f6cef1
|
55 |
localeStore.initLocale(); |
V |
56 |
|
|
57 |
setTimeout(() => { |
|
58 |
clearObsoleteStorage(); |
|
59 |
}, 16); |
|
60 |
} |
|
61 |
|
|
62 |
/** |
|
63 |
* As the version continues to iterate, there will be more and more cache keys stored in localStorage. |
|
64 |
* This method is used to delete useless keys |
|
65 |
*/ |
|
66 |
export function clearObsoleteStorage() { |
|
67 |
const commonPrefix = getCommonStoragePrefix(); |
|
68 |
const shortPrefix = getStorageShortName(); |
|
69 |
|
|
70 |
[localStorage, sessionStorage].forEach((item: Storage) => { |
|
71 |
Object.keys(item).forEach((key) => { |
|
72 |
if (key && key.startsWith(commonPrefix) && !key.startsWith(shortPrefix)) { |
|
73 |
item.removeItem(key); |
|
74 |
} |
|
75 |
}); |
|
76 |
}); |
2f6253
|
77 |
} |