aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-03-06 15:07:23 -0800
committerAdam Soltys <[email protected]>2026-03-06 15:07:23 -0800
commit770d3412e87e0ab981d61f2551ce0bd931b198f5 (patch)
tree35bedcfdcac1504ee81729e5b6e7b1513646e48c /lib
parent133cf91d2f0836b58c10efc8c05b8004bcc68799 (diff)
downloadcoinos-server-770d3412e87e0ab981d61f2551ce0bd931b198f5.tar.gz
coinos-server-770d3412e87e0ab981d61f2551ce0bd931b198f5.zip
fix profile query
Diffstat (limited to 'lib')
-rw-r--r--lib/nostr.ts44
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;
};