Files
talk/client/coral-framework/services/storage.js
T
2017-08-24 18:40:38 +07:00

44 lines
963 B
JavaScript

function getStorage(type) {
let storage = window[type], x = '__storage_test__';
try {
storage.setItem(x, x);
storage.removeItem(x);
} catch (e) {
const ignore = (
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.length !== 0
);
if (!ignore) {
console.warning(e); // eslint-disable-line
return null;
}
}
return storage;
}
/**
* createStorage returns a localStorage wrapper if available
* @return {Object} localStorage wrapper
*/
export function createStorage() {
return getStorage('localStorage');
}