diff --git a/src/lib/LocalRelay.ts b/src/lib/LocalRelay.ts deleted file mode 100644 index ce90113b..00000000 --- a/src/lib/LocalRelay.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { NostrEvent, NostrFilter } from '@nostrify/nostrify'; -import { eventStore } from './eventStore'; - -/** - * LocalRelay implements a Nostr relay interface backed by IndexedDB. - * This allows querying locally cached events without network requests. - */ -export class LocalRelay { - readonly url = 'local://indexeddb'; - - async query(filters: NostrFilter[]): Promise { - try { - const events = await eventStore.query(filters); - // Remove the _relays property before returning - return events.map(({ _relays, ...event }) => event as NostrEvent); - } catch (error) { - console.error('[LocalRelay] Query error:', error); - return []; - } - } - - async event(event: NostrEvent): Promise { - try { - await eventStore.addEvent(event, ['local://indexeddb']); - } catch (error) { - console.error('[LocalRelay] Event storage error:', error); - } - } - - async *req(filters: NostrFilter[]): AsyncGenerator { - try { - const events = await this.query(filters); - for (const event of events) { - yield event; - } - } catch (error) { - console.error('[LocalRelay] Subscription error:', error); - } - } - - // Mock methods to satisfy relay interface - async connect(): Promise { - // IndexedDB is always "connected" - } - - async close(): Promise { - // No-op for IndexedDB - } -} - -export const localRelay = new LocalRelay(); diff --git a/src/lib/eventStore.ts b/src/lib/eventStore.ts index 6fcadd32..d7a54f1c 100644 --- a/src/lib/eventStore.ts +++ b/src/lib/eventStore.ts @@ -1,7 +1,7 @@ import type { NostrEvent, NostrFilter } from '@nostrify/nostrify'; const DB_NAME = 'mew-events'; -const DB_VERSION = 2; +const DB_VERSION = 3; // Increment to force migration from broken v2 // Separate stores for different event types (like Jumble does) const StoreNames = {