DRY chromeLocal and chromeSync

This commit is contained in:
tophf 2017-12-10 10:02:43 +03:00
parent b2b82f8310
commit 5d54ce3464

View File

@ -30,58 +30,50 @@ var cachedStyles = {
}; };
// eslint-disable-next-line no-var // eslint-disable-next-line no-var
var chromeLocal = { var [chromeLocal, chromeSync] = [
get(options) { chrome.storage.local,
return new Promise(resolve => { chrome.storage.sync,
chrome.storage.local.get(options, data => resolve(data)); ].map(storage => {
}); const wrapper = {
}, get(options) {
set(data) { return new Promise(resolve => {
return new Promise(resolve => { storage.get(options, data => resolve(data));
chrome.storage.local.set(data, () => resolve(data)); });
}); },
}, set(data) {
remove(keyOrKeys) { return new Promise(resolve => {
return new Promise(resolve => { storage.set(data, () => resolve(data));
chrome.storage.local.remove(keyOrKeys, resolve); });
}); },
}, remove(keyOrKeys) {
getValue(key) { return new Promise(resolve => {
return chromeLocal.get(key).then(data => data[key]); storage.remove(keyOrKeys, resolve);
}, });
setValue(key, value) { },
return chromeLocal.set({[key]: value}); getValue(key) {
}, return wrapper.get(key).then(data => data[key]);
}; },
setValue(key, value) {
// eslint-disable-next-line no-var return wrapper.set({[key]: value});
var chromeSync = { },
get(options) { getLZValue(key) {
return new Promise(resolve => { return wrapper.getLZValues([key]).then(data => data[key]);
chrome.storage.sync.get(options, resolve); },
}); getLZValues(keys) {
}, return wrapper.get(keys).then((data = {}) => {
set(data) { for (const key of keys) {
return new Promise(resolve => { const value = data[key];
chrome.storage.sync.set(data, () => resolve(data)); data[key] = value && tryJSONparse(LZString.decompressFromUTF16(value));
}); }
}, return data;
getLZValue(key) { });
return chromeSync.getLZValues([key]).then(data => data[key]); },
}, setLZValue(key, value) {
getLZValues(keys) { return wrapper.set({[key]: LZString.compressToUTF16(JSON.stringify(value))});
return chromeSync.get(keys).then((data = {}) => { }
for (const key of keys) { };
const value = data[key]; return wrapper;
data[key] = value && tryJSONparse(LZString.decompressFromUTF16(value)); });
}
return data;
});
},
setLZValue(key, value) {
return chromeSync.set({[key]: LZString.compressToUTF16(JSON.stringify(value))});
}
};
// eslint-disable-next-line no-var // eslint-disable-next-line no-var
var dbExec = dbExecIndexedDB; var dbExec = dbExecIndexedDB;