refactor: reduce browser storage dependence, remove unused code

This commit is contained in:
sethburkart123
2024-06-09 18:04:26 +10:00
parent db98f24555
commit 736cf36068
9 changed files with 53 additions and 42 deletions
@@ -24,6 +24,19 @@ class StorageManager {
Reflect.set(target.data, prop, value);
target.saveToStorage();
return true;
},
deleteProperty: (target, prop: keyof SettingsState) => {
const oldValue = target.data[prop];
if (oldValue !== undefined) {
delete target.data[prop];
target.removeFromStorage(prop);
if (target.listeners[prop]) {
for (const listener of target.listeners[prop]) {
listener(undefined, oldValue);
}
}
}
return true;
}
};
@@ -54,6 +67,10 @@ class StorageManager {
await browser.storage.local.set(this.data);
}
private async removeFromStorage(key: string): Promise<void> {
await browser.storage.local.remove(key);
}
private initStorageListener(): void {
browser.storage.onChanged.addListener((changes, areaName) => {
if (areaName === 'local') {
@@ -73,6 +90,11 @@ class StorageManager {
});
}
/**
* Register a listener for a setting.
* @param prop The setting to listen to.
* @param listener The listener to call when the setting changes.
*/
public register(prop: keyof SettingsState, listener: ChangeListener): void {
if (!this.listeners[prop]) {
this.listeners[prop] = [];