Refactor to Store-based architecture

- Create base Store class with private backend and protected getBackend()
- Add SettingsStore, ProviderKeysStore, SessionsStore
- Each store defines its own schema via getConfig()
- AppStorage now takes stores + backend in constructor
- Remove SessionsRepository (logic moved to SessionsStore)
- Update all consumers to use store API (storage.settings.get/set, storage.providerKeys.get/set)
- Update example app to follow new pattern: create stores, gather configs, create backend, wire
- Benefits: stores own their schema, no circular deps, cleaner separation
This commit is contained in:
Mario Zechner 2025-10-08 16:41:02 +02:00
parent bbbc232c7c
commit 0de89a750e
13 changed files with 243 additions and 126 deletions

View file

@ -56,8 +56,8 @@ export class ProxyTab extends SettingsTab {
// Load proxy settings when tab is connected
try {
const storage = getAppStorage();
const enabled = await storage.getSetting<boolean>("proxy.enabled");
const url = await storage.getSetting<string>("proxy.url");
const enabled = await storage.settings.get<boolean>("proxy.enabled");
const url = await storage.settings.get<string>("proxy.url");
if (enabled !== null) this.proxyEnabled = enabled;
if (url !== null) this.proxyUrl = url;
@ -69,8 +69,8 @@ export class ProxyTab extends SettingsTab {
private async saveProxySettings() {
try {
const storage = getAppStorage();
await storage.setSetting("proxy.enabled", this.proxyEnabled);
await storage.setSetting("proxy.url", this.proxyUrl);
await storage.settings.set("proxy.enabled", this.proxyEnabled);
await storage.settings.set("proxy.url", this.proxyUrl);
} catch (error) {
console.error("Failed to save proxy settings:", error);
}