From eaaf966e6dfb4feda9be0128aff1d5ff810b1015 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 6 Mar 2026 15:47:20 -0800 Subject: use dm relays --- src/lib/marmot.ts | 12 ++++++++++-- src/lib/mls-relay.ts | 27 ++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 3 deletions(-) (limited to 'src/lib') diff --git a/src/lib/marmot.ts b/src/lib/marmot.ts index 2eecbdb1..16789e61 100644 --- a/src/lib/marmot.ts +++ b/src/lib/marmot.ts @@ -97,6 +97,7 @@ class CoinosNostrNetwork implements NostrNetworkInterface { try { const relay = await Relay.connect(url); await relay.publish(event); + relay.close(); results[url] = { from: url, ok: true }; } catch (e: any) { results[url] = { from: url, ok: false, message: e?.message }; @@ -142,9 +143,16 @@ class CoinosNostrNetwork implements NostrNetworkInterface { } async getUserInboxRelays(pubkey: string): Promise { - // Fetch kind 10050 (NIP-17 inbox relays) or fall back to DM_RELAYS + // Fetch kind 10050 (NIP-17 inbox relays) from discovery relays, fall back to DM_RELAYS + const discoveryRelays = [ + ...DM_RELAYS, + "wss://relay.damus.io", + "wss://relay.primal.net", + "wss://nos.lol", + "wss://purplepag.es", + ]; try { - const events = await pool.querySync(DM_RELAYS, { + const events = await pool.querySync(discoveryRelays, { kinds: [10050], authors: [pubkey], limit: 1, diff --git a/src/lib/mls-relay.ts b/src/lib/mls-relay.ts index c8ac2241..e17b76da 100644 --- a/src/lib/mls-relay.ts +++ b/src/lib/mls-relay.ts @@ -121,8 +121,33 @@ export async function publishKeyPackage(user: any, relays: string[] = DM_RELAYS) await client.keyPackages.create({ relays, client: "coinos/marmot-ts" }); } +const DISCOVERY_RELAYS = [ + ...DM_RELAYS, + "wss://relay.damus.io", + "wss://relay.primal.net", + "wss://nos.lol", + "wss://purplepag.es", +]; + +async function getInboxRelays(pubkey: string): Promise { + const events = await pool.querySync(DISCOVERY_RELAYS, { + kinds: [10050], + authors: [pubkey], + limit: 1, + }); + if (events.length > 0) { + const relays = events[0].tags + .filter((t: string[]) => t[0] === "relay") + .map((t: string[]) => t[1]); + if (relays.length > 0) return relays; + } + return []; +} + export async function fetchKeyPackage(pubkey: string, relays: string[] = DM_RELAYS): Promise { - const events = await pool.querySync(relays, { + const inboxRelays = await getInboxRelays(pubkey); + const allRelays = [...new Set([...inboxRelays, ...relays, ...DISCOVERY_RELAYS])]; + const events = await pool.querySync(allRelays, { kinds: [443], authors: [pubkey], limit: 1, -- cgit v1.2.3