Merge pull request #19 from yanbowe/main

feat(storage): local存储增加有效期
This commit is contained in:
Soybean 2021-11-23 10:15:37 +08:00 committed by GitHub
commit 3fb7a5f709
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,12 +1,21 @@
export function setLocal(key: string, value: unknown) { /** 默认缓存期限为7天 */
const json = JSON.stringify(value); const DEFAULT_CACHE_TIME = 60 * 60 * 24 * 7;
export function setLocal(key: string, value: unknown, expire: number | null = DEFAULT_CACHE_TIME) {
const json = JSON.stringify({ value, expire: expire !== null ? new Date().getTime() + expire * 1000 : null });
window.localStorage.setItem(key, json); window.localStorage.setItem(key, json);
} }
export function getLocal<T>(key: string) { export function getLocal<T>(key: string) {
const json = window.localStorage.getItem(key); const json = window.localStorage.getItem(key);
if (json) { if (json) {
return JSON.parse(json) as T; const data = JSON.parse(json);
const { value, expire } = data;
/** 在有效期内直接返回 */
if (expire === null || expire >= Date.now()) {
return value as T;
}
removeLocal(key);
} }
return null; return null;
} }