import { accessSessionKey, getSessionKey, getUserNameKey, userNameKey,domainPrefix } from './request';
|
|
/**
|
* window.localStorage 浏览器永久缓存
|
* @method set 设置永久缓存
|
* @method get 获取永久缓存
|
* @method remove 移除永久缓存
|
* @method clear 移除全部永久缓存
|
*/
|
export const Local = {
|
// 查看 v2.4.3版本更新日志
|
setKey(key: string) {
|
// @ts-ignore
|
return `${__NEXT_NAME__}:${domainPrefix}${key}`;
|
},
|
// 设置永久缓存
|
set<T>(key: string, val: T, win = window) {
|
win.localStorage.setItem(Local.setKey(key), JSON.stringify(val));
|
},
|
// 获取永久缓存
|
get(key: string, win = window) {
|
let json = <string>win.localStorage.getItem(Local.setKey(key));
|
return JSON.parse(json);
|
},
|
// 移除永久缓存
|
remove(key: string, win = window) {
|
win.localStorage.removeItem(Local.setKey(key));
|
},
|
// 移除全部永久缓存
|
clear() {
|
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 浏览器临时缓存
|
* @method set 设置临时缓存
|
* @method get 获取临时缓存
|
* @method remove 移除临时缓存
|
* @method clear 移除全部临时缓存
|
*/
|
export const Session = {
|
// 设置临时缓存
|
set<T>(key: string, val: T) {
|
window.sessionStorage.setItem(Local.setKey(key), JSON.stringify(val));
|
},
|
// 获取临时缓存
|
get(key: string) {
|
let json = <string>window.sessionStorage.getItem(Local.setKey(key));
|
return JSON.parse(json);
|
},
|
// 移除临时缓存
|
remove(key: string) {
|
window.sessionStorage.removeItem(Local.setKey(key));
|
},
|
// 移除全部临时缓存
|
clear() {
|
window.sessionStorage.clear();
|
},
|
};
|
|
export const WinLoginInfo = {
|
set(session: string, name: string, win: any = window) {
|
const sessionKey = getSessionKey(win);
|
const userNameKey = getUserNameKey(win);
|
Local.set(sessionKey, session, win);
|
Local.set(userNameKey, name, win);
|
},
|
remove(win: any = window) {
|
const sessionKey = getSessionKey(win);
|
const userNameKey = getUserNameKey(win);
|
Local.remove(sessionKey, win);
|
Local.remove(userNameKey, 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);
|
}
|
},
|
|
remove() {
|
WinLoginInfo.remove(window);
|
},
|
};
|