wujingjing
2025-04-14 1df71bdd7fc5b35be1447c9cc574bf610666f436
src/utils/storage.ts
@@ -1,4 +1,5 @@
import { accessSessionKey, getSessionKey, getUserNameKey, userNameKey } from './request';
import { STORED_ACCOUNT_KEY } from '../layout/component/login/login';
import { accessSessionKey, getSessionKey, getUserNameKey, userNameKey, domainPrefix } from './request';
/**
 * window.localStorage 浏览器永久缓存
@@ -11,7 +12,7 @@
   // 查看 v2.4.3版本更新日志
   setKey(key: string) {
      // @ts-ignore
      return `${__NEXT_NAME__}:${key}`;
      return `${__NEXT_NAME__}:${domainPrefix}${key}`;
   },
   // 设置永久缓存
   set<T>(key: string, val: T, win = window) {
@@ -20,7 +21,7 @@
   // 获取永久缓存
   get(key: string, win = window) {
      let json = <string>win.localStorage.getItem(Local.setKey(key));
      return JSON.parse(json);
      return json === 'undefined' ? null : JSON.parse(json);
   },
   // 移除永久缓存
   remove(key: string, win = window) {
@@ -31,6 +32,36 @@
      window.localStorage.clear();
   },
};
//#region ====================== 缓存带时间 ======================
type CacheValue<T> = {
   // 过期时间,时间戳
   expiredTime: number;
   value: T;
};
export const LocalPlus = {
   // 设置
   set<T>(key: string, val: T, expireDay: number) {
      const expireMs = expireDay * 24 * 60 * 60 * 1000;
      const cacheValue: CacheValue<T> = {
         expiredTime: new Date().getTime() + expireMs,
         value: val,
      };
      Local.set(key, cacheValue);
   },
   // 获取,过期则清除
   get(key: string) {
      const cacheValue: CacheValue<any> = Local.get(key);
      if (!cacheValue?.expiredTime) return null;
      if (new Date().getTime() > cacheValue.expiredTime) {
         Local.remove(key);
         return null;
      }
      return cacheValue.value;
   },
};
//#endregion
/**
 * window.sessionStorage 浏览器临时缓存
@@ -71,16 +102,17 @@
      const userNameKey = getUserNameKey(win);
      Local.remove(sessionKey, win);
      Local.remove(userNameKey, win);
      Local.remove(STORED_ACCOUNT_KEY, win);
   },
};
export const LoginInfo = {
   set(session: string, name: string) {
      WinLoginInfo.set(session, name, window);
      for (let i = 0; i < window.frames.length; i++) {
         const win = window.frames[i] as any;
         WinLoginInfo.set(session, name, win);
      }
      // for (let i = 0; i < window.frames.length; i++) {
      //    const win = window.frames[i] as any;
      //    WinLoginInfo.set(session, name, win);
      // }
   },
   remove() {