From d9056f66c626c9a79a7ae72a256265661c9517a2 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 17 Mar 2024 15:44:49 -0500 Subject: [PATCH] SearchStore: switch to nspec NRelay1 --- deno.json | 7 ++----- src/storages/search-store.ts | 28 ++++++---------------------- 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/deno.json b/deno.json index 87c3b11f..ccb54ad2 100644 --- a/deno.json +++ b/deno.json @@ -10,10 +10,7 @@ "relays:sync": "deno run -A --unstable-ffi scripts/relays.ts sync" }, "exclude": ["./public"], - "imports": { - "@/": "./src/", - "~/fixtures/": "./fixtures/" - }, + "imports": { "@/": "./src/", "@soapbox/nspec": "jsr:@soapbox/nspec@^0.7.0", "~/fixtures/": "./fixtures/" }, "lint": { "include": ["src/", "scripts/"], "rules": { @@ -30,4 +27,4 @@ "singleQuote": true, "proseWrap": "preserve" } -} \ No newline at end of file +} diff --git a/src/storages/search-store.ts b/src/storages/search-store.ts index 3f7c6423..2aabbf8d 100644 --- a/src/storages/search-store.ts +++ b/src/storages/search-store.ts @@ -1,6 +1,5 @@ -import { NiceRelay } from 'https://gitlab.com/soapbox-pub/nostr-machina/-/raw/5f4fb59c90c092e5aa59c01e6556a4bec264c167/mod.ts'; - -import { Debug, type NostrEvent, NSet, type NStore, type NStoreOpts } from '@/deps.ts'; +import { NRelay1 } from '@soapbox/nspec'; +import { Debug, type NostrEvent, type NStore, type NStoreOpts } from '@/deps.ts'; import { normalizeFilters } from '@/filter.ts'; import { type DittoEvent } from '@/interfaces/DittoEvent.ts'; import { type DittoFilter } from '@/interfaces/DittoFilter.ts'; @@ -18,14 +17,14 @@ class SearchStore implements NStore { #fallback: NStore; #hydrator: NStore; - #relay: NiceRelay | undefined; + #relay: NRelay1 | undefined; constructor(opts: SearchStoreOpts) { this.#fallback = opts.fallback; this.#hydrator = opts.hydrator ?? this; if (opts.relay) { - this.#relay = new NiceRelay(opts.relay); + this.#relay = new NRelay1(opts.relay); } } @@ -45,25 +44,10 @@ class SearchStore implements NStore { if (this.#relay && this.#relay.socket.readyState === WebSocket.OPEN) { this.#debug(`Searching for "${query}" at ${this.#relay.socket.url}...`); - const sub = this.#relay.req(filters, opts); - - const close = () => { - sub.close(); - opts?.signal?.removeEventListener('abort', close); - sub.eoseSignal.removeEventListener('abort', close); - }; - - opts?.signal?.addEventListener('abort', close, { once: true }); - sub.eoseSignal.addEventListener('abort', close, { once: true }); - - const events = new NSet(); - - for await (const event of sub) { - events.add(event); - } + const events = await this.#relay.query(filters, opts); return hydrateEvents({ - events: [...events], + events, relations: ['author', 'event_stats', 'author_stats'], storage: this.#hydrator, signal: opts?.signal,