Files
wompchat/src/utils/chrome/Storage.js
wompmacho daaf8714ae removed unnecesary license comments
removed unnecesary license comments generated by that add-license thing
2020-11-02 02:54:46 -05:00

68 lines
1.5 KiB
JavaScript

class Storage {
get(keys = null) {
return new Promise((res, rej) => {
const returnSingle = typeof keys === 'string' || typeof keys === 'number';
// resolve args = items:object
chrome.storage[this.store].get(keys, (items) => {
if(returnSingle) {
res(items[keys]);
} else {
res(items);
}
});
});
}
getBytesInUse(keys = null) {
return new Promise((res, rej) => {
// resolve args = bytesInUse:integer
chrome.storage[this.store].getBytesInUse(keys, res);
});
}
set(items) {
return new Promise((res, rej) => {
// resolve args = (none)
chrome.storage[this.store].set(items, res);
});
}
remove(keys) {
// resolve args = (none)
return new Promise((res, rej) => {
chrome.storage[this.store].remove(keys, res);
});
}
clear() {
// resolve args = (none)
return new Promise((res, rej) => {
chrome.storage[this.store].clear(res);
});
}
listen(item, onChange) {
if(typeof item === 'function') {
onChange = item;
item = null;
}
chrome.storage.onChanged.addListener((changes, areaName) => {
if(areaName === this.store) {
if(item !== null) {
if(changes.hasOwnProperty(item)) {
const oldValue = changes[item].oldValue || null;
const newValue = changes[item].newValue || null;
onChange(oldValue, newValue);
}
} else {
onChange(changes);
}
}
});
}
}
export default Storage;