/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** * Save something to persistent storage. * @param {string} key * @param {string} value non-string values are converted to strings. * @param {bool} nochangeupdate If true, the settings version won't be updated. * @returns {undefined} */ function setStorage(key, value, nochangeupdate) { if (typeof nochangeupdate == 'undefined') { nochangeupdate = false; } localStorage.setItem(key, value); try { NativeStorage.setItem(key, value); } catch (ex) { // skip } if (!nochangeupdate && !SETTINGS.synckeyblacklist.includes(key)) { var version = getStorage("syncstateversion") == null ? 0 : getStorage("syncstateversion"); localStorage.setItem("syncstateversion", Number(version) + 1); } } /** * Get an item from persistent storage. * @param {type} key * @returns {DOMString} */ function getStorage(key) { return localStorage.getItem(key); } /** * Check if an item is in the persistent storage. * @param {string} key * @returns {Boolean} */ function inStorage(key) { return localStorage.getItem(key) != null; } /** * Erase the key and its value from the persistent storage. * @param {string} key * @returns {undefined} */ function removeStorage(key) { localStorage.removeItem(key); } /** * Get all item from persistent storage. * @returns {Array} [{key: "", value: ""},...] */ function getAllStorage() { var all = []; for (var key in localStorage) { if (localStorage.hasOwnProperty(key)) { all.push({ key: key, value: getStorage(key) }); } } return all; } function copyLocalStorageToNativeStorage() { for (var key in localStorage) { if (localStorage.hasOwnProperty(key)) { NativeStorage.setItem(key, localStorage.getItem(key)); } } } function copyNativeStorageToLocalStorage() { NativeStorage.keys(function (keys) { for (var i = 0; i < keys.length; i++) { (function (key) { NativeStorage.getItem(key, function (val) { localStorage.setItem(key, val); }); })(keys[i]); } }); }