55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
const isAvailable = () => {
|
|
// https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API
|
|
let storage = null;
|
|
|
|
try {
|
|
storage = window.localStorage;
|
|
const x = '__storage_test__';
|
|
storage.setItem(x, x);
|
|
storage.removeItem(x);
|
|
return true;
|
|
} catch (e) {
|
|
return (
|
|
e instanceof DOMException &&
|
|
// everything except Firefox
|
|
(e.code === 22 ||
|
|
// Firefox
|
|
e.code === 1014 ||
|
|
// test name field too, because code might not be present
|
|
// everything except Firefox
|
|
e.name === 'QuotaExceededError' ||
|
|
// Firefox
|
|
e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&
|
|
// acknowledge QuotaExceededError only if there's something already stored
|
|
storage &&
|
|
storage.length !== 0
|
|
);
|
|
}
|
|
};
|
|
|
|
const Set = (key, value) => {
|
|
if (isAvailable() === false) {
|
|
return;
|
|
}
|
|
|
|
window.localStorage.setItem('@@restreamer-ui@@' + key, value);
|
|
};
|
|
|
|
const Get = (key) => {
|
|
if (isAvailable() === false) {
|
|
return null;
|
|
}
|
|
|
|
return window.localStorage.getItem('@@restreamer-ui@@' + key);
|
|
};
|
|
|
|
const Remove = (key) => {
|
|
if (isAvailable() === false) {
|
|
return;
|
|
}
|
|
|
|
window.localStorage.removeItem('@@restreamer-ui@@' + key);
|
|
};
|
|
|
|
export { Set, Get, Remove };
|