mirror of
https://github.com/wassname/talk.git
synced 2026-07-06 05:17:19 +08:00
44 lines
963 B
JavaScript
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');
|
|
}
|