91 lines
No EOL
2.3 KiB
TypeScript
91 lines
No EOL
2.3 KiB
TypeScript
const { assigned } = require("../utils/helpers")
|
|
|
|
export interface ICustomBrowserStorageProvider {
|
|
setData(key: string, value: string): void;
|
|
getData(key: string, defaultValue: string, callback: (x: string) => void): void;
|
|
}
|
|
|
|
class StorageProviderChromium implements ICustomBrowserStorageProvider {
|
|
|
|
setData(key: string, value: string): void {
|
|
let obj = {};
|
|
obj[key] = value;
|
|
|
|
this.getStorage().set(obj);
|
|
}
|
|
|
|
getData(key: string, defaultValue: string, callback: (x: string) => void): void {
|
|
this.getStorage().get(key, items => {
|
|
if (assigned(items) && assigned(items[key])) {
|
|
callback(items[key]);
|
|
}
|
|
else {
|
|
callback(defaultValue);
|
|
}
|
|
})
|
|
}
|
|
|
|
private getStorage(): chrome.storage.StorageArea {
|
|
if (assigned(chrome.storage.sync)) {
|
|
return chrome.storage.sync;
|
|
}
|
|
|
|
return chrome.storage.local;
|
|
}
|
|
}
|
|
|
|
|
|
class StorageProviderFirefox implements ICustomBrowserStorageProvider {
|
|
|
|
setData(key: string, value: string): void {
|
|
let obj = {};
|
|
obj[key] = value;
|
|
|
|
this.getStorage().set(obj);
|
|
}
|
|
|
|
getData(key: string, defaultValue: string, callback: (x: string) => void): void {
|
|
let promise = this.getStorage().get(key);
|
|
|
|
promise.then(items => {
|
|
if (assigned(items) && assigned(items[key])) {
|
|
callback(items[key] as string);
|
|
}
|
|
else {
|
|
callback(defaultValue);
|
|
}
|
|
});
|
|
}
|
|
|
|
private getStorage(): browser.storage.StorageArea {
|
|
if (assigned(browser.storage.sync)) {
|
|
return browser.storage.sync;
|
|
}
|
|
|
|
return browser.storage.local;
|
|
}
|
|
}
|
|
|
|
let __storageProvieder: ICustomBrowserStorageProvider;
|
|
|
|
function createStorageProvider() {
|
|
// chrome based browser
|
|
// TODO: chrome.app?
|
|
// if (assigned(chrome?.app)) {
|
|
if (true) {
|
|
__storageProvieder = new StorageProviderChromium();
|
|
}
|
|
// firefox
|
|
else {
|
|
__storageProvieder = new StorageProviderFirefox();
|
|
}
|
|
|
|
}
|
|
|
|
export function getGlobalStorageProvider(): ICustomBrowserStorageProvider {
|
|
if (!assigned(__storageProvieder)) {
|
|
createStorageProvider();
|
|
}
|
|
|
|
return __storageProvieder;
|
|
} |