mirror of
https://gitee.com/willfree/MINResolveV2.git
synced 2026-06-03 08:16:55 +08:00
80 lines
2.1 KiB
JavaScript
80 lines
2.1 KiB
JavaScript
/**
|
|
* Storage function of URLRedirector.
|
|
*/
|
|
|
|
/* Low level load */
|
|
function _load(keys, callback, area) {
|
|
if (!area) {
|
|
area = browser.storage.local;
|
|
}
|
|
area.get(
|
|
keys,
|
|
function (item) {
|
|
if (browser.runtime.lastError) {
|
|
console.error(browser.runtime.lastError);
|
|
}
|
|
if (callback) {
|
|
callback(item);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
/* Low level save */
|
|
function _save(obj, callback, area) {
|
|
if (!area) {
|
|
area = browser.storage.local;
|
|
}
|
|
area.set(
|
|
obj,
|
|
function () {
|
|
if (browser.runtime.lastError) {
|
|
console.error(browser.runtime.lastError);
|
|
}
|
|
if (callback) {
|
|
callback();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
function load(keys, callback) {
|
|
// Load storage.local and check if sync is enable, then try to load
|
|
// storage.sync, if failed fail back to storage.local
|
|
_load(keys, function (item) {
|
|
if (item && item.storage) {
|
|
if (item.storage.sync && browser.storage.sync) {
|
|
_load(keys, function (itemSync) {
|
|
if (itemSync == undefined || itemSync == null ||
|
|
itemSync.storage == undefined || itemSync.storage == null) {
|
|
callback(item);
|
|
} else {
|
|
callback(itemSync);
|
|
}
|
|
}, browser.storage.sync)
|
|
} else {
|
|
callback(item);
|
|
}
|
|
} else {
|
|
/* The first time to load storage, try to load storage.sync */
|
|
if (browser.storage.sync) {
|
|
_load(keys, function (item) {
|
|
callback(item);
|
|
}, browser.storage.sync)
|
|
} else {
|
|
callback(item);
|
|
}
|
|
}
|
|
}, browser.storage.local);
|
|
}
|
|
|
|
function save(obj, callback) {
|
|
if (obj.storage.sync && browser.storage.sync) {
|
|
_save(obj, function () {
|
|
_save(obj, callback, browser.storage.local);
|
|
}, browser.storage.sync)
|
|
} else {
|
|
_save(obj, callback, browser.storage.local);
|
|
}
|
|
}
|