From 770d3412e87e0ab981d61f2551ce0bd931b198f5 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 6 Mar 2026 15:07:23 -0800 Subject: fix profile query --- lib/nostr.ts | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/nostr.ts b/lib/nostr.ts index 7ed41f36..e98e56a8 100644 --- a/lib/nostr.ts +++ b/lib/nostr.ts @@ -215,25 +215,39 @@ export const getNostrUser = async (key) => { export const q = async (f) => { let events = (await scan(f)) as Event[]; + if (events.length) return events; + const k = JSON.stringify(f).replace(/[^a-zA-Z0-9]/g, ""); - const since = await g(`${k}:since}`); + const since = await g(`${k}:since`); if (since) f.since = since; - const p = new Promise((resolve) => { - const r = []; - (pool as any).subscribeMany(["wss://relay.primal.net"], [f], { - onevent(e) { - r.push(e); - coinos.publish(e); - }, - oneose() { - resolve(r); - }, - }); - }); + const externalRelays = config.relays.filter((r) => r.startsWith("wss://")); + + events = ( + await Promise.all( + externalRelays.map( + (url) => + new Promise((resolve) => { + const found: Event[] = []; + Relay.connect(url) + .then((r) => { + r.subscribe([f], { + onevent(e) { + found.push(e); + coinos.publish(e).catch(() => {}); + }, + oneose() { + r.close(); + resolve(found); + }, + }); + }) + .catch(() => resolve([])); + }), + ), + ) + ).flat(); - if (events.length) return events; - events = (await p) as Event[]; if (events.length) db.set(`${k}:since`, events[events.length - 1].created_at); return events; }; -- cgit v1.2.3