forked from wangjiadong/comp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.5 KiB
84 lines
2.5 KiB
/** |
|
* Application configuration |
|
*/ |
|
import type { ProjectConfig } from '/#/config'; |
|
|
|
import { PROJ_CFG_KEY } from '/@/enums/cacheEnum'; |
|
import projectSetting from '/@/settings/projectSetting'; |
|
|
|
import { updateHeaderBgColor, updateSidebarBgColor } from '/@/logics/theme/updateBackground'; |
|
import { updateColorWeak } from '/@/logics/theme/updateColorWeak'; |
|
import { updateGrayMode } from '/@/logics/theme/updateGrayMode'; |
|
import { updateDarkTheme } from '/@/logics/theme/dark'; |
|
import { changeTheme } from '/@/logics/theme'; |
|
|
|
import { useAppStore } from '/@/store/modules/app'; |
|
import { useLocaleStore } from '/@/store/modules/locale'; |
|
|
|
import { getCommonStoragePrefix, getStorageShortName } from '/@/utils/env'; |
|
|
|
import { primaryColor } from '../../build/config/themeConfig'; |
|
import { Persistent } from '/@/utils/cache/persistent'; |
|
import { deepMerge } from '/@/utils'; |
|
import { ThemeEnum } from '/@/enums/appEnum'; |
|
|
|
// Initial project configuration |
|
export function initAppConfigStore() { |
|
const localeStore = useLocaleStore(); |
|
const appStore = useAppStore(); |
|
let projCfg: ProjectConfig = Persistent.getLocal(PROJ_CFG_KEY) as ProjectConfig; |
|
projCfg = deepMerge(projectSetting, projCfg || {}); |
|
const darkMode = appStore.getDarkMode; |
|
const { |
|
colorWeak, |
|
grayMode, |
|
themeColor, |
|
|
|
headerSetting: { bgColor: headerBgColor } = {}, |
|
menuSetting: { bgColor } = {}, |
|
} = projCfg; |
|
try { |
|
if (themeColor && themeColor !== primaryColor) { |
|
changeTheme(themeColor); |
|
} |
|
|
|
grayMode && updateGrayMode(grayMode); |
|
colorWeak && updateColorWeak(colorWeak); |
|
} catch (error) { |
|
console.log(error); |
|
} |
|
appStore.setProjectConfig(projCfg); |
|
|
|
// init dark mode |
|
updateDarkTheme(darkMode); |
|
if (darkMode === ThemeEnum.DARK) { |
|
updateHeaderBgColor(); |
|
updateSidebarBgColor(); |
|
} else { |
|
headerBgColor && updateHeaderBgColor(headerBgColor); |
|
bgColor && updateSidebarBgColor(bgColor); |
|
} |
|
// init store |
|
localeStore.initLocale(); |
|
|
|
setTimeout(() => { |
|
clearObsoleteStorage(); |
|
}, 16); |
|
} |
|
|
|
/** |
|
* As the version continues to iterate, there will be more and more cache keys stored in localStorage. |
|
* This method is used to delete useless keys |
|
*/ |
|
export function clearObsoleteStorage() { |
|
const commonPrefix = getCommonStoragePrefix(); |
|
const shortPrefix = getStorageShortName(); |
|
|
|
[localStorage, sessionStorage].forEach((item: Storage) => { |
|
Object.keys(item).forEach((key) => { |
|
if (key && key.startsWith(commonPrefix) && !key.startsWith(shortPrefix)) { |
|
item.removeItem(key); |
|
} |
|
}); |
|
}); |
|
}
|
|
|