mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-13 09:12:52 +00:00
43 lines
1.0 KiB
JavaScript
43 lines
1.0 KiB
JavaScript
|
|
// https://github.com/openstreetmap/iD/issues/772
|
|
// http://mathiasbynens.be/notes/localstorage-pattern#comment-9
|
|
let _storage;
|
|
try { _storage = localStorage; } catch (e) {} // eslint-disable-line no-empty
|
|
_storage = _storage || (() => {
|
|
let s = {};
|
|
return {
|
|
getItem: (k) => s[k],
|
|
setItem: (k, v) => s[k] = v,
|
|
removeItem: (k) => delete s[k]
|
|
};
|
|
})();
|
|
|
|
//
|
|
// corePreferences is an interface for persisting basic key-value strings
|
|
// within and between iD sessions on the same site.
|
|
//
|
|
/**
|
|
* @param {string} k
|
|
* @param {string?} v
|
|
* @returns {boolean} true if the action succeeded
|
|
*/
|
|
function corePreferences(k, v) {
|
|
|
|
try {
|
|
if (arguments.length === 1) return _storage.getItem(k);
|
|
else if (v === null) _storage.removeItem(k);
|
|
else _storage.setItem(k, v);
|
|
return true;
|
|
} catch (e) {
|
|
/* eslint-disable no-console */
|
|
if (typeof console !== 'undefined') {
|
|
console.error('localStorage quota exceeded');
|
|
}
|
|
/* eslint-enable no-console */
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
export { corePreferences as prefs };
|