mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 22:03:45 +00:00
Implement unified storage architecture
- Replace fragmented storage backends with single IndexedDBStorageBackend - Create multi-store StorageBackend interface (storeName parameter) - Remove old backends: IndexedDBBackend, LocalStorageBackend, SessionIndexedDBBackend, WebExtensionStorageBackend - Remove old repositories: ProviderKeysRepository, SessionRepository, SettingsRepository - Simplify AppStorage to directly expose storage methods (getSetting/setSetting, getProviderKey/setProviderKey) - Create SessionsRepository for session-specific operations - Update all consumers to use new simplified API - Update example app to use new storage architecture - Benefits: 10GB+ quota (vs 10MB chrome.storage), single database, consistent API
This commit is contained in:
parent
b3cce7b400
commit
bbbc232c7c
19 changed files with 421 additions and 998 deletions
|
|
@ -29,7 +29,7 @@ export class ApiKeyPromptDialog extends DialogBase {
|
|||
|
||||
// Poll for key existence - when key is added, resolve and close
|
||||
const checkInterval = setInterval(async () => {
|
||||
const hasKey = await getAppStorage().providerKeys.hasKey(this.provider);
|
||||
const hasKey = !!(await getAppStorage().getProviderKey(this.provider));
|
||||
if (hasKey) {
|
||||
clearInterval(checkInterval);
|
||||
if (this.resolvePromise) {
|
||||
|
|
|
|||
|
|
@ -30,13 +30,7 @@ export class SessionListDialog extends DialogBase {
|
|||
this.loading = true;
|
||||
try {
|
||||
const storage = getAppStorage();
|
||||
if (!storage.sessions) {
|
||||
console.error("Session storage not available");
|
||||
this.sessions = [];
|
||||
return;
|
||||
}
|
||||
|
||||
this.sessions = await storage.sessions.listSessions();
|
||||
this.sessions = await storage.sessions.getAllMetadata();
|
||||
} catch (err) {
|
||||
console.error("Failed to load sessions:", err);
|
||||
this.sessions = [];
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ export class ProxyTab extends SettingsTab {
|
|||
// Load proxy settings when tab is connected
|
||||
try {
|
||||
const storage = getAppStorage();
|
||||
const enabled = await storage.settings.get<boolean>("proxy.enabled");
|
||||
const url = await storage.settings.get<string>("proxy.url");
|
||||
const enabled = await storage.getSetting<boolean>("proxy.enabled");
|
||||
const url = await storage.getSetting<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.settings.set("proxy.enabled", this.proxyEnabled);
|
||||
await storage.settings.set("proxy.url", this.proxyUrl);
|
||||
await storage.setSetting("proxy.enabled", this.proxyEnabled);
|
||||
await storage.setSetting("proxy.url", this.proxyUrl);
|
||||
} catch (error) {
|
||||
console.error("Failed to save proxy settings:", error);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue