refactor(projects): 生产环境缓存主题变更为sessionStorage

This commit is contained in:
Soybean 2023-07-05 01:41:57 +08:00
parent 43ac23f113
commit c46a5920e5
5 changed files with 14 additions and 15 deletions

View File

@ -17,7 +17,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { useAppInfo } from '@/composables'; import { useAppInfo } from '@/composables';
import { localStg, getRgbOfColor } from '@/utils'; import { sessionStg, getRgbOfColor } from '@/utils';
import themeSettings from '@/settings/theme.json'; import themeSettings from '@/settings/theme.json';
const { title } = useAppInfo(); const { title } = useAppInfo();
@ -31,7 +31,7 @@ const lodingClasses = [
function addThemeColorCssVars() { function addThemeColorCssVars() {
const defaultColor = themeSettings.themeColor; const defaultColor = themeSettings.themeColor;
const themeColor = localStg.get('themeColor') || defaultColor; const themeColor = sessionStg.get('themeColor') || defaultColor;
const { r, g, b } = getRgbOfColor(themeColor); const { r, g, b } = getRgbOfColor(themeColor);

View File

@ -1,19 +1,19 @@
import type { GlobalThemeOverrides } from 'naive-ui'; import type { GlobalThemeOverrides } from 'naive-ui';
import { cloneDeep } from 'lodash-es'; import { cloneDeep } from 'lodash-es';
import { themeSetting } from '@/settings'; import { themeSetting } from '@/settings';
import { localStg, addColorAlpha, getColorPalette } from '@/utils'; import { sessionStg, addColorAlpha, getColorPalette } from '@/utils';
/** 初始化主题配置 */ /** 初始化主题配置 */
export function initThemeSettings() { export function initThemeSettings() {
const isProd = import.meta.env.PROD; const isProd = import.meta.env.PROD;
// 生产环境才缓存主题配置本地开发实时调整配置更改配置的json // 生产环境才缓存主题配置本地开发实时调整配置更改配置的json
const storageSettings = localStg.get('themeSettings'); const storageSettings = sessionStg.get('themeSettings');
if (isProd && storageSettings) { if (isProd && storageSettings) {
return storageSettings; return storageSettings;
} }
const themeColor = localStg.get('themeColor') || themeSetting.themeColor; const themeColor = sessionStg.get('themeColor') || themeSetting.themeColor;
const info = themeSetting.isCustomizeInfoColor ? themeSetting.otherColor.info : getColorPalette(themeColor, 7); const info = themeSetting.isCustomizeInfoColor ? themeSetting.otherColor.info : getColorPalette(themeColor, 7);
const otherColor = { ...themeSetting.otherColor, info }; const otherColor = { ...themeSetting.otherColor, info };
const setting = cloneDeep({ ...themeSetting, themeColor, otherColor }); const setting = cloneDeep({ ...themeSetting, themeColor, otherColor });

View File

@ -1,6 +1,6 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { darkTheme } from 'naive-ui'; import { darkTheme } from 'naive-ui';
import { localStg } from '@/utils'; import { sessionStg } from '@/utils';
import { getNaiveThemeOverrides, initThemeSettings } from './helpers'; import { getNaiveThemeOverrides, initThemeSettings } from './helpers';
type ThemeState = Theme.Setting; type ThemeState = Theme.Setting;
@ -25,14 +25,14 @@ export const useThemeStore = defineStore('theme-store', {
actions: { actions: {
/** 重置theme状态 */ /** 重置theme状态 */
resetThemeStore() { resetThemeStore() {
localStg.remove('themeSettings'); sessionStg.remove('themeSettings');
this.$reset(); this.$reset();
}, },
/** 缓存主题配置 */ /** 缓存主题配置 */
cacheThemeSettings() { cacheThemeSettings() {
const isProd = import.meta.env.PROD; const isProd = import.meta.env.PROD;
if (isProd) { if (isProd) {
localStg.set('themeSettings', this.$state); sessionStg.set('themeSettings', this.$state);
} }
}, },
/** 设置暗黑模式 */ /** 设置暗黑模式 */

View File

@ -3,7 +3,7 @@ import { useOsTheme } from 'naive-ui';
import type { GlobalThemeOverrides } from 'naive-ui'; import type { GlobalThemeOverrides } from 'naive-ui';
import { useElementSize } from '@vueuse/core'; import { useElementSize } from '@vueuse/core';
import { kebabCase } from 'lodash-es'; import { kebabCase } from 'lodash-es';
import { localStg, getColorPalettes, getRgbOfColor } from '@/utils'; import { sessionStg, getColorPalettes, getRgbOfColor } from '@/utils';
import { useThemeStore } from '../modules'; import { useThemeStore } from '../modules';
/** 订阅theme store */ /** 订阅theme store */
@ -19,7 +19,7 @@ export default function subscribeThemeStore() {
watch( watch(
() => theme.themeColor, () => theme.themeColor,
newValue => { newValue => {
localStg.set('themeColor', newValue); sessionStg.set('themeColor', newValue);
}, },
{ immediate: true } { immediate: true }
); );

View File

@ -1,21 +1,20 @@
declare namespace StorageInterface { declare namespace StorageInterface {
/** localStorage的存储数据的类型 */ /** localStorage的存储数据的类型 */
interface Session { interface Session {
demoKey: string; /** 主题颜色 */
themeColor: string;
/** 主题配置 */
themeSettings: Theme.Setting;
} }
/** localStorage的存储数据的类型 */ /** localStorage的存储数据的类型 */
interface Local { interface Local {
/** 主题颜色 */
themeColor: string;
/** 用户token */ /** 用户token */
token: string; token: string;
/** 用户刷新token */ /** 用户刷新token */
refreshToken: string; refreshToken: string;
/** 用户信息 */ /** 用户信息 */
userInfo: Auth.UserInfo; userInfo: Auth.UserInfo;
/** 主题配置 */
themeSettings: Theme.Setting;
/** 多页签路由信息 */ /** 多页签路由信息 */
multiTabRoutes: App.GlobalTabRoute[]; multiTabRoutes: App.GlobalTabRoute[];
/** 本地语言缓存 */ /** 本地语言缓存 */