analytics/assets/js/dashboard/util/storage.js
2021-12-03 13:59:32 +02:00

36 lines
951 B
JavaScript

// This module checks if localStorage is available and uses it for persistent frontend storage
// if possible. Localstorage can be blocked by browsers when people block third-party cookies and
// the dashboard is running in embedded mode. In those cases, store stuff in a regular object instead.
const memStore = {}
// https://stackoverflow.com/a/16427747
function testLocalStorageAvailability(){
try {
const testItem = 'test';
localStorage.setItem(testItem, testItem);
localStorage.removeItem(testItem);
return true;
} catch(e) {
return false;
}
}
const isLocalStorageAvailable = testLocalStorageAvailability()
export function setItem(key, value) {
if (isLocalStorageAvailable) {
window.localStorage.setItem(key, value)
} else {
memStore[key] = value
}
}
export function getItem(key) {
if (isLocalStorageAvailable) {
return window.localStorage.getItem(key)
} else {
return memStore[key]
}
}