Browse Source

bug-fix

Nostr-Signature: 1cc16c438c4b1cc5170a90a7e4b540afa24d0c698538dc332fa4753437b21dfe 573634b648634cbad10f2451776089ea21090d9407f715e83c577b4611ae6edc 3caddc0d00e29995f4920bd4035ea61b4fd2d17e366bdd18889ede38a5ea960cd9f83a9f524b777b8de7bf7e4cdf59ab55c8fb4e46932655985ba8c6f3d7e7da
main
Silberengel 3 weeks ago
parent
commit
aa185e6b6f
  1. 1
      nostr/commit-signatures.jsonl
  2. 56
      src/lib/services/settings-store.ts

1
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":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":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":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"}

56
src/lib/services/settings-store.ts

@ -3,7 +3,17 @@
* Stores: auto-save, user.name, user.email, theme, messagingPreferences * 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<Logger> => {
if (!loggerCache) {
const loggerModule = await import('./logger.js');
loggerCache = loggerModule.default;
}
return loggerCache;
};
const DB_NAME = 'gitrepublic_settings'; const DB_NAME = 'gitrepublic_settings';
const DB_VERSION = 1; const DB_VERSION = 1;
@ -47,32 +57,36 @@ export class SettingsStore {
} }
if (typeof window === 'undefined' || !window.indexedDB) { if (typeof window === 'undefined' || !window.indexedDB) {
const logger = await getLogger();
logger.debug('IndexedDB not available, using in-memory cache only'); logger.debug('IndexedDB not available, using in-memory cache only');
return; return;
} }
this.initPromise = new Promise((resolve, reject) => { this.initPromise = (async () => {
const request = indexedDB.open(DB_NAME, DB_VERSION); const logger = await getLogger();
return new Promise<void>((resolve, reject) => {
const request = indexedDB.open(DB_NAME, DB_VERSION);
request.onerror = () => { request.onerror = () => {
logger.error('Failed to open settings IndexedDB'); logger.error('Failed to open settings IndexedDB');
reject(new Error('Failed to open settings IndexedDB')); reject(new Error('Failed to open settings IndexedDB'));
}; };
request.onsuccess = () => { request.onsuccess = () => {
this.db = request.result; this.db = request.result;
resolve(); resolve();
}; };
request.onupgradeneeded = (event) => { request.onupgradeneeded = (event) => {
const db = (event.target as IDBOpenDBRequest).result; const db = (event.target as IDBOpenDBRequest).result;
// Settings store - stores all settings as a single object // Settings store - stores all settings as a single object
if (!db.objectStoreNames.contains(STORE_SETTINGS)) { if (!db.objectStoreNames.contains(STORE_SETTINGS)) {
db.createObjectStore(STORE_SETTINGS, { keyPath: 'id' }); db.createObjectStore(STORE_SETTINGS, { keyPath: 'id' });
} }
}; };
}); });
})();
return this.initPromise; return this.initPromise;
} }
@ -114,6 +128,7 @@ export class SettingsStore {
this.settingsCache = result; this.settingsCache = result;
return result; return result;
} catch (error) { } catch (error) {
const logger = await getLogger();
logger.error({ error }, 'Error reading settings from IndexedDB'); logger.error({ error }, 'Error reading settings from IndexedDB');
return { ...DEFAULT_SETTINGS }; return { ...DEFAULT_SETTINGS };
} }
@ -125,6 +140,8 @@ export class SettingsStore {
async updateSettings(updates: Partial<Settings>): Promise<void> { async updateSettings(updates: Partial<Settings>): Promise<void> {
await this.init(); await this.init();
const logger = await getLogger();
if (!this.db) { if (!this.db) {
logger.debug('IndexedDB not available, cannot save settings'); logger.debug('IndexedDB not available, cannot save settings');
return; return;
@ -191,6 +208,7 @@ export class SettingsStore {
// Clear cache // Clear cache
this.settingsCache = null; this.settingsCache = null;
} catch (error) { } catch (error) {
const logger = await getLogger();
logger.error({ error }, 'Error clearing settings'); logger.error({ error }, 'Error clearing settings');
} }
} }

Loading…
Cancel
Save