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.
77 lines
2.6 KiB
77 lines
2.6 KiB
/** |
|
* @program: kicc-ui |
|
* @description: 初始化应用程序配置 |
|
* @author: entfrm开发团队-王翔 |
|
* @create: 2022/4/8 |
|
*/ |
|
|
|
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'; |
|
|
|
/** 初始项目配置 */ |
|
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); |
|
// 初始化暗模式 |
|
updateDarkTheme(darkMode); |
|
if (darkMode === ThemeEnum.DARK) { |
|
updateHeaderBgColor(); |
|
updateSidebarBgColor(); |
|
} else { |
|
headerBgColor && updateHeaderBgColor(headerBgColor); |
|
bgColor && updateSidebarBgColor(bgColor); |
|
} |
|
// 初始化存储 |
|
localeStore.initLocale(); |
|
setTimeout(() => { |
|
clearObsoleteStorage(); |
|
}, 16); |
|
} |
|
|
|
/** |
|
* 随着版本的不断迭代,localStorage 中存储的缓存键将会越来越多。 |
|
* 此方法用于删除无用的键 |
|
*/ |
|
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); |
|
} |
|
}); |
|
}); |
|
}
|
|
|