1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-28 08:06:56 +00:00
Files
seahub/frontend/src/utils/local-storage-utils.js
2024-06-17 10:31:29 +08:00

52 lines
1.2 KiB
JavaScript

class LocalStorage {
static setItem(key, value) {
let savedValue;
const valueType = typeof value;
if (valueType === 'string') {
savedValue = value;
} else if (valueType === 'number') {
savedValue = value + '';
} else {
savedValue = JSON.stringify(value);
}
return window.localStorage.setItem(key, savedValue);
}
static getItem(key, defaultValue) {
const value = window.localStorage.getItem(key);
try {
return JSON.parse(value) || defaultValue;
} catch {
return value || defaultValue;
}
}
static removeItem(key) {
return window.localStorage.removeItem(key);
}
// The setExpire and getExpire methods used to satisfy some cases that need to be updated regularly
static setExpire(key, value, expire) {
let obj = {
data: value,
time: Date.now(),
expire: expire
};
this.setItem(key, JSON.stringify(obj));
}
static getExpire(key) {
let val = this.getItem(key);
if (!val) return val;
val = JSON.parse(val);
if (Date.now() - val.time > val.expire) {
this.removeItem(key);
return null;
}
return val.data;
}
}
export default LocalStorage;