JSFiddle - React, Tailwind, and code Playground
by amindunited
JavaScript
const ex = new DOMException();
ex.code = 22;
ex.name = 'QuotaExceededError';
window.fakeStorage = {
setItem: () => { throw ex },
removeItem: () => { throw ex }
};
window.fakeStorage.length = 222;
const isSupported = (type = 'fakeStorage') => {
// const type = 'sessionStorage'; // Use 'localStorage' for local Storage
let storage;
try {
storage = window[type];
let x = '__storage_test__';
storage.setItem(x, x);
storage.removeItem(x);
return true;
}
catch(e) {
console.log('Catch!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
console.log('e instanceof DOMException', e instanceof DOMException);
console.log('e.code', e.code);
console.log('e.name', e.name);
console.log('storage.length', storage.length);
const result = 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);
console.log('result ', result);
return result;
}
};
isSupported();