UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

2 lines (1 loc) 1.98 kB
import a from"../tools/logger";import f from"../tools/settings";import{isLocalStorageAvailable as c}from"./localStorage";const s={};function u(o){return`${f.EXPO}-${o}`}function m(o){return o}function g(o){return o==="bookmarked"?{exhibitors:[],events:[],speakers:[],booths:[]}:{exhibitors:[],events:[]}}function b(o,r){if(r==null||typeof r!="object")return a.log(`Invalid ${o} data in localStorage - using defaults`),g(o);if(Array.isArray(r)){const t=o==="bookmarked"?{exhibitors:r,events:[],speakers:[],booths:[]}:{exhibitors:r,events:[]};return a.log(`Migrated ${o} data from array to object format`),saveStorage(o,t),t}if(o==="bookmarked"){const t=r,e={...t};return"speakers"in e||(e.speakers=[]),"booths"in e||(e.booths=[]),(!t.speakers||!t.booths)&&(a.log(`Migrated ${o} data (added speakers or booths field)`),saveStorage(o,e)),e}return o==="visited"?r:(a.log(`Unsupported ${o} data format - using defaults`),g(o))}export function getStorage(o){if(s[o])return s[o];const r=g(o);if(!c)return a.warn(`localStorage unavailable \u2014 using default for ${o}`),s[o]=r,r;const t=u(o),e=o;let i=null;try{i=localStorage.getItem(t)??localStorage.getItem(e)}catch(n){a.warn(`localStorage access error for ${o}`,n)}if(!i)return s[o]=r,r;try{const n=JSON.parse(i),l=b(o,n);return s[o]=l,l}catch(n){return a.error(`Error parsing ${o} data`,n),s[o]=r,r}}export function saveStorage(o,r){if(!c)return;const t=u(o);try{localStorage.setItem(t,JSON.stringify(r)),s[o]=r;const e={exhibitors:r.exhibitors.length,events:r.events.length};r.speakers&&(e.speakers=r.speakers.length),r.booths&&(e.booths=r.booths.length),a.log(`save${o[0].toUpperCase()+o.slice(1)}ToLocalStorage`,e)}catch(e){a.error(`Failed to save ${o} data`,e)}}export function getBookmarkStorage(){return getStorage("bookmarked")}export function getVisitedStorage(){return getStorage("visited")}export function saveBookmarkStorage(o){saveStorage("bookmarked",o)}export function saveVisitedStorage(o){saveStorage("visited",o)}