UNPKG

@erfffun/utils

Version:

Energi javascript utilities for web development

45 lines (41 loc) 1.08 kB
import localStorage from '../localStorage'; /** * Assigns a property to a class instance which is synced to the users browser as a cookie on read/write. * @param {Object} object Object instance to apply property to * @param {string} key Key to assign to object * @param {boolean} simpleType Defines if the value to be stored is a simple type or an object structure */ const localStorageProperty = ( key, { simpleType = false, encoded = true } = {}, ) => { let value; return { get() { if (!value && localStorage) { if (simpleType) { value = localStorage.getSimpleType(key, encoded); } else { value = localStorage.getObject(key, encoded); } } return value; }, set(newValue) { if (localStorage) { try { if (simpleType) { localStorage.setSimpleType(key, newValue, encoded); } else { localStorage.setObject(key, newValue, encoded); } } catch (err) { // eslint-disable-next-line no-console console.warn(err); } } value = newValue; }, }; }; export default localStorageProperty;