diff --git a/nostr/commit-signatures.jsonl b/nostr/commit-signatures.jsonl index addffda..e3a08a8 100644 --- a/nostr/commit-signatures.jsonl +++ b/nostr/commit-signatures.jsonl @@ -31,3 +31,4 @@ {"kind":1640,"pubkey":"573634b648634cbad10f2451776089ea21090d9407f715e83c577b4611ae6edc","created_at":1771622212,"tags":[["author","Silberengel","silberengel7@protonmail.com"],["message","finish implementing nip-34"]],"content":"Signed commit: finish implementing nip-34","id":"e036526abc826e4435a562f1f334e594577d78a7a50a02cb78f8e5565ea68872","sig":"12642202ef028dfbac68ce53e9cf9f7a64ce3242d2dd995fd0b4c4014c9aa2b18891b72dc281fa5aadacd636646ebd8d2b69fd29bf36407658dff9725b779be5"} {"kind":1640,"pubkey":"573634b648634cbad10f2451776089ea21090d9407f715e83c577b4611ae6edc","created_at":1771622823,"tags":[["author","Silberengel","silberengel7@protonmail.com"],["message","finish missing events"]],"content":"Signed commit: finish missing events","id":"964e4a35978748cbbc5127daad5c8a0724b6df6f4342c5b0940dd16bc2e8262d","sig":"f44401709ba7a5fdf988f149033d7aa9bd838e8d6b86cd6357d738e69fab405d0df70394910ceebdb22501518583280499320424a5e7b4999e91d1fb6a2b07b8"} {"kind":1640,"pubkey":"573634b648634cbad10f2451776089ea21090d9407f715e83c577b4611ae6edc","created_at":1771623058,"tags":[["author","Silberengel","silberengel7@protonmail.com"],["message","bug-fixes"]],"content":"Signed commit: bug-fixes","id":"29ded44ac53cd8c924310728e3bac34070a2daa62418f3d79a386fdc84d93afe","sig":"a60a145c2f234e4bad593423ebc2a39ab12ec7a78c343b46348e6dbeac809be9b61e42219c9d569cc0902788bb59af3c36ffd0de1aa56d9d52611575d2ac797f"} +{"kind":1640,"pubkey":"573634b648634cbad10f2451776089ea21090d9407f715e83c577b4611ae6edc","created_at":1771624450,"tags":[["author","Silberengel","silberengel7@protonmail.com"],["message","bug-fixes and doc updates"]],"content":"Signed commit: bug-fixes and doc updates","id":"d089915a2d9a9d46ba25d2d3c1cb4608a2b658ecc4260f17e73efa4ccc63a28d","sig":"3d447f05a55704d45ed843b7cc5fa16e49f3da0e452b1523392aefbb7a2ae3e79400a763df5705db8e38abc89e9a89480ab2c529890b531b171c4e980520d9b8"} diff --git a/src/lib/services/settings-store.ts b/src/lib/services/settings-store.ts index 9b9ba7c..73d0b76 100644 --- a/src/lib/services/settings-store.ts +++ b/src/lib/services/settings-store.ts @@ -3,7 +3,17 @@ * Stores: auto-save, user.name, user.email, theme, messagingPreferences */ -import logger from './logger.js'; +// Lazy import logger to avoid initialization order issues +import type { Logger } from '../types/logger.js'; + +let loggerCache: Logger | null = null; +const getLogger = async (): Promise => { + if (!loggerCache) { + const loggerModule = await import('./logger.js'); + loggerCache = loggerModule.default; + } + return loggerCache; +}; const DB_NAME = 'gitrepublic_settings'; const DB_VERSION = 1; @@ -47,32 +57,36 @@ export class SettingsStore { } if (typeof window === 'undefined' || !window.indexedDB) { + const logger = await getLogger(); logger.debug('IndexedDB not available, using in-memory cache only'); return; } - this.initPromise = new Promise((resolve, reject) => { - const request = indexedDB.open(DB_NAME, DB_VERSION); + this.initPromise = (async () => { + const logger = await getLogger(); + return new Promise((resolve, reject) => { + const request = indexedDB.open(DB_NAME, DB_VERSION); - request.onerror = () => { - logger.error('Failed to open settings IndexedDB'); - reject(new Error('Failed to open settings IndexedDB')); - }; + request.onerror = () => { + logger.error('Failed to open settings IndexedDB'); + reject(new Error('Failed to open settings IndexedDB')); + }; - request.onsuccess = () => { - this.db = request.result; - resolve(); - }; + request.onsuccess = () => { + this.db = request.result; + resolve(); + }; - request.onupgradeneeded = (event) => { - const db = (event.target as IDBOpenDBRequest).result; + request.onupgradeneeded = (event) => { + const db = (event.target as IDBOpenDBRequest).result; - // Settings store - stores all settings as a single object - if (!db.objectStoreNames.contains(STORE_SETTINGS)) { - db.createObjectStore(STORE_SETTINGS, { keyPath: 'id' }); - } - }; - }); + // Settings store - stores all settings as a single object + if (!db.objectStoreNames.contains(STORE_SETTINGS)) { + db.createObjectStore(STORE_SETTINGS, { keyPath: 'id' }); + } + }; + }); + })(); return this.initPromise; } @@ -114,6 +128,7 @@ export class SettingsStore { this.settingsCache = result; return result; } catch (error) { + const logger = await getLogger(); logger.error({ error }, 'Error reading settings from IndexedDB'); return { ...DEFAULT_SETTINGS }; } @@ -125,6 +140,8 @@ export class SettingsStore { async updateSettings(updates: Partial): Promise { await this.init(); + const logger = await getLogger(); + if (!this.db) { logger.debug('IndexedDB not available, cannot save settings'); return; @@ -191,6 +208,7 @@ export class SettingsStore { // Clear cache this.settingsCache = null; } catch (error) { + const logger = await getLogger(); logger.error({ error }, 'Error clearing settings'); } }