Sanakey
2024-08-02 1ba88a00d3c7bb0f16a73feaa5ffcf7c1635e0ea
提交 | 用户 | 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 }