// @flow // **************************************************************************** // **************************************************************************** export const LS = Object.freeze({ AUTH_IN_PROGRESS: 'authInProgress', CHANNEL_LIVE_STATUS: 'channel-live-status', GDPR_REQUIRED: 'gdprRequired', // <-- should be using 'locale/get', right? SHARE_INTERNAL: 'shareInternal', TUS_LOCKED_UPLOADS: 'tusLockedUploads', TUS_REFRESH_LOCK: 'tusRefreshLock', TUS_REMOVED_UPLOADS: 'tusRemovedUploads', }); // **************************************************************************** // **************************************************************************** export function isLocalStorageAvailable() { try { return Boolean(window.localStorage); } catch (e) { return false; } } export function isSessionStorageAvailable() { try { return Boolean(window.sessionStorage); } catch (e) { return false; } } export function getLocalStorageSummary() { try { const count = window.localStorage.length; const estimatedSize = JSON.stringify(window.localStorage).length; return `${count} items; ${estimatedSize} bytes`; } catch (e) { return 'inaccessible'; } } // **************************************************************************** // LocalStorage (wrapper for 'window.localStorage') // **************************************************************************** // This assumes that local storage availability never changes after boot. const localStorageAvailable = isLocalStorageAvailable(); export const LocalStorage = { setItem: (key: string, value: string) => { if (localStorageAvailable) window.localStorage.setItem(key, value); }, getItem: (key: string) => { return localStorageAvailable ? window.localStorage.getItem(key) : undefined; }, removeItem: (key: string) => { if (localStorageAvailable) window.localStorage.removeItem(key); }, };