@nethesis/phone-island
Version:
NethVoice CTI Phone Island
3 lines (2 loc) • 1.23 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("./useEventListener.js"),t=require("./useEventCallback.js");exports.useLocalStorage=function(r,o){var a=e.useCallback((function(){if("undefined"==typeof window)return o;try{var e=window.localStorage.getItem(r);return e?function(e){try{return"undefined"===e?void 0:JSON.parse(null!=e?e:"")}catch(n){return void console.log("parsing error on",{value:e})}}(e):o}catch(e){return console.warn("Error reading localStorage key “".concat(r,"”:"),e),o}}),[o,r]),c=e.useState(a),i=c[0],l=c[1],s=t.useEventCallback((function(e){"undefined"==typeof window&&console.warn("Tried setting localStorage key “".concat(r,"” even though environment is not a client"));try{var n=e instanceof Function?e(i):e;window.localStorage.setItem(r,JSON.stringify(n)),l(n),window.dispatchEvent(new Event("local-storage"))}catch(e){console.warn("Error setting localStorage key “".concat(r,"”:"),e)}}));e.useEffect((function(){l(a())}),[]);var u=e.useCallback((function(e){(null==e?void 0:e.key)&&e.key!==r||l(a())}),[r,a]);return n.useEventListener("storage",u),n.useEventListener("local-storage",u),[i,s]};
//# sourceMappingURL=useLocalStorage.js.map