From 53cb36710837f1cdf62b4bcf860cff3d405ec664 Mon Sep 17 00:00:00 2001 From: Adrien Hopkins Date: Fri, 31 Oct 2025 19:07:30 -0500 Subject: Add DM Relays to settings page Currently it uses a separate button, since I need to figure out how to get this to work with the different pages. Next, I'll fit it into the save button. --- src/routes/(app)/settings/nostr/+page.svelte | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src') diff --git a/src/routes/(app)/settings/nostr/+page.svelte b/src/routes/(app)/settings/nostr/+page.svelte index 7168f4f7..5ca64588 100644 --- a/src/routes/(app)/settings/nostr/+page.svelte +++ b/src/routes/(app)/settings/nostr/+page.svelte @@ -18,6 +18,9 @@ let extensionAvailable = $derived(browser && window.nostr); let { locale } = $derived(user); + import { SimplePool } from 'nostr-tools/pool'; + import { finalizeEvent } from 'nostr-tools/pure'; + let newNsec = $state(), nsec = $state(), pin = $state(""), @@ -41,6 +44,28 @@ await tick(); $save.click(); }; + + const pool = new SimplePool(); + import { PUBLIC_DM_RELAYS } from '$env/static/public'; + const DM_RELAYS_LIST = PUBLIC_DM_RELAYS.split(','); + let dmRelaysText = $state(''); + let updateRelays = async () => { + const newRelays = dmRelaysText.split('\n'); + const event = { + kind: 10050, + created_at: Math.floor(Date.now() / 1000), + tags: newRelays.map(r => ["relay", r]), + content: "" + }; + let signed; + if (await window.nostr.getPublicKey() === user.pubkey) { + signed = await window.nostr.signEvent(event); + } else { + const sk = await getPrivateKey(user); + signed = finalizeEvent(event, sk); + } + await Promise.any(pool.publish(DM_RELAYS_LIST, signed)); + } @@ -231,3 +256,11 @@ {/if} {/if} + +

+ Preferred DM Relays +

+Direct Messages meant for you will be published to these relays. + + + -- cgit v1.2.3