/** * Application configuration */ import type { ProjectConfig } from '@/types/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) } }) }) }