diff options
| author | Adam Soltys <[email protected]> | 2026-03-06 15:07:23 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-03-06 15:07:23 -0800 |
| commit | 770d3412e87e0ab981d61f2551ce0bd931b198f5 (patch) | |
| tree | 35bedcfdcac1504ee81729e5b6e7b1513646e48c /lib | |
| parent | 133cf91d2f0836b58c10efc8c05b8004bcc68799 (diff) | |
| download | coinos-server-770d3412e87e0ab981d61f2551ce0bd931b198f5.tar.gz coinos-server-770d3412e87e0ab981d61f2551ce0bd931b198f5.zip | |
fix profile query
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/nostr.ts | 44 |
1 files changed, 29 insertions, 15 deletions
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<Event[]>((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; }; |
