UNPKG

@exabytellc/utils

Version:

EB react utils to make everything a little easier!

78 lines (66 loc) 2.27 kB
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; } }); } }