aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes
diff options
context:
space:
mode:
authorAdrien Hopkins <[email protected]>2025-11-18 11:23:39 -0500
committerAdrien Hopkins <[email protected]>2025-11-18 11:23:39 -0500
commit082429c6ebe4cf78d58e9c0249bb8e83271fc778 (patch)
tree000ecdd138d1c72b8557ffbe6b92efb6178c376a /src/routes
parent9c05ecb697144c3e6299be1158eb4f53d41d3198 (diff)
downloadcoinos-ui-082429c6ebe4cf78d58e9c0249bb8e83271fc778.tar.gz
coinos-ui-082429c6ebe4cf78d58e9c0249bb8e83271fc778.zip
Only put valid URLs in kind-10050 relay tags
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/(app)/settings/+layout.svelte23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/routes/(app)/settings/+layout.svelte b/src/routes/(app)/settings/+layout.svelte
index ef4b8abf..24c54a97 100644
--- a/src/routes/(app)/settings/+layout.svelte
+++ b/src/routes/(app)/settings/+layout.svelte
@@ -1,4 +1,4 @@
-<script>
+<script lang="ts">
import { browser } from "$app/environment";
import { onMount, tick } from "svelte";
import { fly } from "svelte/transition";
@@ -51,11 +51,17 @@
const pool = new SimplePool();
import { PUBLIC_DM_RELAYS } from '$env/static/public';
const DM_RELAYS_LIST = PUBLIC_DM_RELAYS.split(',');
- let updateRelaysIfAvailable = async () => {
+ const updateRelaysIfAvailable = async () => {
const relayEntry = document.getElementById('dmRelays');
- if (!relayEntry) return;
+ if (!relayEntry || relayEntry.value.length === 0) return;
+
+ const newRelays = relayEntry.value.split(/[ \r\n\t]+/)
+ .filter(isValidURL);
+ if (newRelays.length === 0) {
+ warning($t("user.settings.noDMURLsWarning"));
+ return;
+ }
- const newRelays = relayEntry.value.split(/[ \r\n\t]+/);
const event = {
kind: 10050,
created_at: Math.floor(Date.now() / 1000),
@@ -72,6 +78,15 @@
await Promise.any(pool.publish(DM_RELAYS_LIST, signed));
}
+ const isValidURL = (url: string) => {
+ try {
+ new URL(url);
+ return true;
+ } catch (err) {
+ return false;
+ }
+ }
+
async function handleSubmit(e) {
updateRelaysIfAvailable();
e.preventDefault();