press-plus
Version:
77 lines (61 loc) • 1.65 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 { IChildParams } from './types';
export { DETAIL_CACHE_KEY_LIST };
function getChildKey({
siteId,
parentId,
childId,
}: Pick<IChildParams, 'childId' | 'parentId' | 'siteId'>) {
return `${siteId}_${parentId}_${childId}`;
}
export function setChildDetailCache({
siteId,
parentId,
childId,
childInfo,
isTestEnv,
}: IChildParams) {
if (!siteId || !parentId || !childId || !childInfo) return;
const childKey = getChildKey({
siteId,
parentId,
childId,
});
let originInfo: Record<string, any> = {};
const storageKey = isTestEnv ? DETAIL_CACHE_KEY_LIST.CHILD_TEST : DETAIL_CACHE_KEY_LIST.CHILD;
try {
originInfo = JSON.parse(storageUtil.get(storageKey));
} catch (err) {
originInfo = {};
}
storageUtil.set(storageKey, JSON.stringify({
...sliceObject(originInfo || {}, MAX_CACHE_NUMBER),
[childKey]: childInfo,
}));
}
export function getChildDetailCache({
siteId,
parentId,
childId,
isTestEnv,
}: Pick<IChildParams, 'siteId' | 'parentId' | 'childId' | 'isTestEnv'>) {
if (!siteId || !parentId || !childId) {
return {};
}
const childKey = getChildKey({
siteId,
parentId,
childId,
});
const storageKey = isTestEnv ? DETAIL_CACHE_KEY_LIST.CHILD_TEST : DETAIL_CACHE_KEY_LIST.CHILD;
const str = storageUtil.get(storageKey);
let info = {};
try {
info = JSON.parse(str)[childKey];
} catch (err) {
info = {};
}
return info;
}