@exabytellc/utils
Version:
EB react utils to make everything a little easier!
78 lines (66 loc) • 2.27 kB
JavaScript
import StorageHelper from "../_helpers/StorageHelper";
export default class Cookie extends StorageHelper {
static get enabled() {
return navigator.cookieEnabled;
}
static get(name, { json = false } = {}) {
return this.handleTryCatch({
n: "get",
k: name,
e: () => {
const cookieList = decodeURIComponent(document.cookie).split(";");
const cookieMap = {};
for (const cookieStr of cookieList) {
const [key, value] = cookieStr.trim().split("=");
cookieMap[key] = cookieMap[key] ? [...cookieMap[key], value] : value;
}
let value = cookieMap?.[name];
if (value && json) {
value = JSON.parse(value);
}
return value;
}
});
}
static set(name, value, { expireHours = 24 * 7, json = false } = {}) {
return this.handleTryCatch({
n: "set",
k: name,
f: false,
e: () => {
if (value && json) {
value = JSON.stringify(value);
}
const expire = expireHours
? `expires=${new Date(Date.now() + expireHours * 3600000).toUTCString()};`
: "";
document.cookie = `${name}=${value};${expire}path=/;`;
return true;
}
});
}
static del(name) {
return this.handleTryCatch({
n: "del",
k: name,
f: false,
e: () => {
document.cookie = `${name}=;expires=${new Date(Date.now() / 2).toUTCString()};path=/`;
return true;
}
});
}
static refresh(name, expireHours = 24 * 7) {
return this.handleTryCatch({
n: "refresh",
k: name,
e: () => {
const value = Cookie.get(name);
if (value) {
Cookie.set(name, value, { expireHours });
}
return value;
}
});
}
}