From 29c629150aac2aaf089554c75e92f68520d4e1b3 Mon Sep 17 00:00:00 2001 From: Adrien Hopkins Date: Sat, 1 Nov 2025 11:00:24 -0500 Subject: Use save button to save DM relays This needed me to use document.getElementById instead of Svelte states, but it works. --- src/routes/(app)/settings/+layout.svelte | 28 ++++++++++++++++++++++ src/routes/(app)/settings/nostr/+page.svelte | 36 +++++----------------------- 2 files changed, 34 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/routes/(app)/settings/+layout.svelte b/src/routes/(app)/settings/+layout.svelte index 3c2ebd88..75827719 100644 --- a/src/routes/(app)/settings/+layout.svelte +++ b/src/routes/(app)/settings/+layout.svelte @@ -17,6 +17,9 @@ import { getPublicKey } from "nostr-tools"; import { bytesToHex } from "@noble/hashes/utils"; + import { SimplePool } from 'nostr-tools/pool'; + import { finalizeEvent } from 'nostr-tools/pure'; + let { children, data, form } = $props(); let formElement = $state(); @@ -45,7 +48,32 @@ let { about, id, username } = $derived(user); let submitting = $state(); + const pool = new SimplePool(); + import { PUBLIC_DM_RELAYS } from '$env/static/public'; + const DM_RELAYS_LIST = PUBLIC_DM_RELAYS.split(','); + let updateRelaysIfAvailable = async () => { + const relayEntry = document.getElementById('dmRelays'); + if (!relayEntry) return; + + const newRelays = relayEntry.value.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)); + } + async function handleSubmit(e) { + updateRelaysIfAvailable(); e.preventDefault(); try { submitting = true; diff --git a/src/routes/(app)/settings/nostr/+page.svelte b/src/routes/(app)/settings/nostr/+page.svelte index 5ca64588..204b924b 100644 --- a/src/routes/(app)/settings/nostr/+page.svelte +++ b/src/routes/(app)/settings/nostr/+page.svelte @@ -1,4 +1,4 @@ - @@ -257,10 +232,11 @@ {/if} -

+ Preferred DM Relays + +

+ Direct Messages meant for you will be published to these relays.

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