diff options
| author | Adam Soltys <[email protected]> | 2026-03-06 15:47:20 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-03-06 15:47:20 -0800 |
| commit | eaaf966e6dfb4feda9be0128aff1d5ff810b1015 (patch) | |
| tree | 3560506ce92698fc177e0d96666026aeb35f8ccf /src | |
| parent | d14c03e3f2e3806e17852a440d2a39f377570758 (diff) | |
| download | coinos-ui-eaaf966e6dfb4feda9be0128aff1d5ff810b1015.tar.gz coinos-ui-eaaf966e6dfb4feda9be0128aff1d5ff810b1015.zip | |
use dm relays
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/marmot.ts | 12 | ||||
| -rw-r--r-- | src/lib/mls-relay.ts | 27 |
2 files changed, 36 insertions, 3 deletions
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<string[]> { - // 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<string[]> { + 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<NostrEvent | null> { - 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, |
