mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 03:34:40 +00:00
refactor: remove dependence on frequent storage requests
This commit is contained in:
@@ -2,6 +2,8 @@ import Color from 'color';
|
||||
|
||||
|
||||
export function lightenAndPaleColor(inputColor: any, lightenFactor = 0.75, paleFactor = 0.55) {
|
||||
if (!inputColor) return;
|
||||
|
||||
if (inputColor.includes('gradient')) {
|
||||
const baseColor = findMatchingColor(inputColor);
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user