press-plus
Version:
57 lines (42 loc) • 1.24 kB
text/typescript
import { storageUtil } from 'press-ui/common/utils/storage';
import { sliceObject } from 't-comm/es/base/object/slice';
import { DETAIL_CACHE_KEY_LIST, MAX_CACHE_NUMBER } from './config';
import type { ISiteParams } from './types';
export { DETAIL_CACHE_KEY_LIST };
export function setSiteDetailCache({
siteId,
siteInfo,
isTestEnv,
}: ISiteParams) {
if (!siteId || !siteInfo) return;
const siteKey = siteId;
let originInfo: Record<string, any> = {};
const storageKey = isTestEnv ? DETAIL_CACHE_KEY_LIST.SITE_TEST : DETAIL_CACHE_KEY_LIST.SITE;
try {
originInfo = JSON.parse(storageUtil.get(storageKey));
} catch (err) {
originInfo = {};
}
storageUtil.set(storageKey, JSON.stringify({
...sliceObject(originInfo || {}, MAX_CACHE_NUMBER),
[siteKey]: siteInfo,
}));
}
export function getSiteDetailCache({
siteId,
isTestEnv,
}: Pick<ISiteParams, 'siteId' | 'isTestEnv'>) {
if (!siteId) {
return {};
}
const siteKey = siteId;
const storageKey = isTestEnv ? DETAIL_CACHE_KEY_LIST.SITE_TEST : DETAIL_CACHE_KEY_LIST.SITE;
const str = storageUtil.get(storageKey);
let info = {};
try {
info = JSON.parse(str)[siteKey];
} catch (err) {
info = {};
}
return info;
}