import { isNil } from 'lodash';
class Storage {
constructor(type) {
if (type === 'localStorage') {
this.storage = window.localStorage;
} else {
this.storage = window.sessionStorage;
}
}
setItem(key, value, expired) {
if (!key && !isNil(value)) {
return;
}
let params = value;
if (expired) {
params = {
value,
expired,
saveTime: new Date().getTime()
};
}
this.storage.setItem(key, JSON.stringify(params));
}
getItem(key) {
let item = this.storage.getItem(key);
if (!item || item === 'null' || item === 'undefined') {
return;
}
try {
item = JSON.parse(item);
} catch (error) {
console.log(error);
}
if (item.expired) {
const now = new Date().getTime();
if (now - item.saveTime > item.expired * 1000) {
this.storage.removeItem(key);
console.log('storage缓存已过期');
return false;
} else {
return item.value;
}
} else {
return item;
}
}
removeItem(key) {
this.storage.removeItem(key);
}
clear() {
this.storage.clear();
}
}
const local = new Storage('localStorage');
const session = new Storage('sessionStorage');
export {
local,
session
};