aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-03-06 15:47:20 -0800
committerAdam Soltys <[email protected]>2026-03-06 15:47:20 -0800
commiteaaf966e6dfb4feda9be0128aff1d5ff810b1015 (patch)
tree3560506ce92698fc177e0d96666026aeb35f8ccf /src
parentd14c03e3f2e3806e17852a440d2a39f377570758 (diff)
downloadcoinos-ui-eaaf966e6dfb4feda9be0128aff1d5ff810b1015.tar.gz
coinos-ui-eaaf966e6dfb4feda9be0128aff1d5ff810b1015.zip
use dm relays
Diffstat (limited to 'src')
-rw-r--r--src/lib/marmot.ts12
-rw-r--r--src/lib/mls-relay.ts27
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,