Spaces:
Sleeping
Sleeping
import Cookies from 'js-cookie'; | |
export default class CacheStorage { | |
static storageMethod = process.env.REACT_APP_CACHE_METHOD; | |
// Get data | |
static get(key) { | |
if (this.storageMethod === 'session') { | |
return sessionStorage.getItem(key); | |
} else if (this.storageMethod === 'cookie') { | |
return Cookies.get(key); | |
} | |
return null; | |
} | |
// Set data | |
static set(key, value, param = { expiryDate: null }) { | |
if (this.storageMethod === 'session') { | |
sessionStorage.setItem(key, value); | |
} else if (this.storageMethod === 'cookie') { | |
if (param.expiryDate) { | |
const expiryDate = new Date(param.expiryDate * 1000); | |
Cookies.set(key, value, { expires: expiryDate }) | |
} else if (Cookies.get('expiryDate')) { | |
const expiryDate = new Date(Cookies.get('expiryDate') * 1000); | |
Cookies.set(key, value, { expires: expiryDate }); | |
} else Cookies.set(key, value, { expires: 7 })// Expires in 7 by default | |
} | |
} | |
// Remove data | |
static remove(key) { | |
if (this.storageMethod === 'session') { | |
sessionStorage.removeItem(key); | |
} else if (this.storageMethod === 'cookie') { | |
Cookies.remove(key); | |
} | |
} | |
// Get all data | |
static getAll() { | |
const data = {}; | |
if (this.storageMethod === 'session') { | |
for (let i = 0; i < sessionStorage.length; i++) { | |
const key = sessionStorage.key(i); | |
data[key] = sessionStorage.getItem(key); | |
} | |
} else if (this.storageMethod === 'cookie') { | |
const cookies = Cookies.get(); | |
Object.keys(cookies).forEach(key => { | |
data[key] = cookies[key]; | |
}); | |
} | |
return data; | |
} | |
// Clear all data | |
static clearAll() { | |
if (this.storageMethod === 'session') { | |
sessionStorage.clear(); | |
} else if (this.storageMethod === 'cookie') { | |
const cookies = Cookies.get(); | |
Object.keys(cookies).forEach(key => { | |
Cookies.remove(key); | |
}); | |
} | |
} | |
// Check if a key exists | |
static hasKey(key) { | |
if (this.storageMethod === 'session') { | |
return sessionStorage.getItem(key) !== null; | |
} else if (this.storageMethod === 'cookie') { | |
return Cookies.get(key) !== undefined; | |
} | |
return false; | |
} | |
// Get all keys | |
static getKeys() { | |
const keys = []; | |
if (this.storageMethod === 'session') { | |
for (let i = 0; i < sessionStorage.length; i++) { | |
keys.push(sessionStorage.key(i)); | |
} | |
} else if (this.storageMethod === 'cookie') { | |
keys.push(...Object.keys(Cookies.get())); | |
} | |
return keys; | |
} | |
} | |