aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdrien Hopkins <[email protected]>2025-10-31 19:07:30 -0500
committerAdrien Hopkins <[email protected]>2025-10-31 19:07:30 -0500
commit53cb36710837f1cdf62b4bcf860cff3d405ec664 (patch)
tree18c313695779f4503c8729be4f7a117e67d28585 /src
parent56e45190fd535f5f6c06914a8b9985e07bd7458c (diff)
downloadcoinos-ui-53cb36710837f1cdf62b4bcf860cff3d405ec664.tar.gz
coinos-ui-53cb36710837f1cdf62b4bcf860cff3d405ec664.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/routes/(app)/settings/nostr/+page.svelte33
1 files changed, 33 insertions, 0 deletions
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));
+ }
</script>
<input type="hidden" name="challenge" value={challenge} />
@@ -231,3 +256,11 @@
{/if}
</div>
{/if}
+
+<p class="font-bold">
+ Preferred DM Relays
+</p>
+Direct Messages meant for you will be published to these relays.
+
+<textarea name="dmRelays" bind:value={dmRelaysText} rows={3}></textarea>
+<button onclick={updateRelays} class="btn">Update Preferred DM Relays</button>