refactor: remove dependence on frequent storage requests

This commit is contained in:
sethburkart123
2024-06-09 17:24:57 +10:00
parent 693f63021f
commit e0ac71eba4
4 changed files with 250 additions and 287 deletions
+9 -1
View File
@@ -14,10 +14,11 @@ class StorageManager {
this.loadFromStorage();
const handler: ProxyHandler<StorageManager> = {
get: (target, prop: keyof SettingsState | 'register') => {
get: (target, prop: keyof SettingsState | 'register' | 'initialize') => {
if (prop in target) {
return (target as any)[prop];
}
//console.log(this.data[prop], prop, this.data)
return Reflect.get(target.data, prop);
},
set: (target, prop: keyof SettingsState, value) => {
@@ -39,6 +40,12 @@ class StorageManager {
return StorageManager.instance as StorageManager & SettingsState;
}
public static async initialize(): Promise<StorageManager & SettingsState> {
const instance = StorageManager.getInstance();
await instance.loadFromStorage();
return instance;
}
private async loadFromStorage(): Promise<void> {
const result = await browser.storage.local.get();
this.data = { ...this.data, ...result };
@@ -76,3 +83,4 @@ class StorageManager {
}
export const settingsState = StorageManager.getInstance();
export const initializeSettingsState = async () => await StorageManager.initialize();
+9 -1
View File
@@ -3,10 +3,12 @@ import { updateAllColors } from '../../ui/colors/Manager';
import {
CreateBackground,
CreateCustomShortcutDiv,
FilterUpcomingAssessments,
RemoveBackground,
RemoveShortcutDiv,
addShortcuts,
disableNotificationCollector,
documentTextColor,
enableNotificationCollector,
} from '../../../SEQTA';
import { updateBgDurations } from '../../ui/Animation';
@@ -20,7 +22,7 @@ export class StorageChangeHandler {
private registerHandlers() {
settingsState.register('selectedColor', updateAllColors.bind(this));
settingsState.register('DarkMode', updateAllColors.bind(this));
settingsState.register('DarkMode', this.handleDarkModeChange.bind(this));
settingsState.register('onoff', this.handleOnOffChange.bind(this));
settingsState.register('shortcuts', this.handleShortcutsChange.bind(this));
settingsState.register('customshortcuts', this.handleCustomShortcutsChange.bind(this));
@@ -28,6 +30,12 @@ export class StorageChangeHandler {
settingsState.register('bksliderinput', updateBgDurations.bind(this));
settingsState.register('animatedbk', this.handleAnimatedBkChange.bind(this));
settingsState.register('transparencyEffects', this.handleTransparencyEffectsChange.bind(this));
settingsState.register('subjectfilters', FilterUpcomingAssessments.bind(this));
}
private handleDarkModeChange() {
updateAllColors();
documentTextColor();
}
private handleOnOffChange() {