aboutsummaryrefslogtreecommitdiffstats
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
parent133cf91d2f0836b58c10efc8c05b8004bcc68799 (diff)
downloadcoinos-server-770d3412e87e0ab981d61f2551ce0bd931b198f5.tar.gz
coinos-server-770d3412e87e0ab981d61f2551ce0bd931b198f5.zip
fix profile query
-rw-r--r--config.ts.sample2
-rw-r--r--lib/nostr.ts44
2 files changed, 31 insertions, 15 deletions
diff --git a/config.ts.sample b/config.ts.sample
index 253232b5..b28c6b6b 100644
--- a/config.ts.sample
+++ b/config.ts.sample
@@ -13,6 +13,8 @@ export default {
nostr: "ws://nostr:8080",
relays: [
"ws://nostr:8080",
+ "wss://relay.primal.net",
+ "wss://relay.damus.io",
"wss://nostr-pub.wellorder.net",
"wss://brb.io",
"wss://nostr.v0l.io",
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;
};