From 078423a1b26280838ba3751f34a8c1dc278e2425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Lohrer?= Date: Wed, 15 Apr 2026 16:37:41 +0200 Subject: [PATCH] spa: read-relays-store mit bootstrap aus kind:10002 --- app/src/lib/stores/readRelays.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 app/src/lib/stores/readRelays.ts diff --git a/app/src/lib/stores/readRelays.ts b/app/src/lib/stores/readRelays.ts new file mode 100644 index 0000000..70708c9 --- /dev/null +++ b/app/src/lib/stores/readRelays.ts @@ -0,0 +1,29 @@ +import { writable, type Readable } from 'svelte/store'; +import { loadOutboxRelays, readUrls } from '$lib/nostr/relays'; +import { FALLBACK_READ_RELAYS } from '$lib/nostr/config'; + +/** + * Store mit der aktuellen Read-Relay-Liste. + * Initial = FALLBACK_READ_RELAYS, damit die SPA sofort abfragen kann; + * sobald loadOutboxRelays() fertig ist, wird der Store aktualisiert. + * + * Singleton-Initialisierung: bootstrapReadRelays() wird genau einmal beim ersten + * Import aufgerufen. + */ +const store = writable([...FALLBACK_READ_RELAYS]); +let bootstrapped = false; + +export function bootstrapReadRelays(): void { + if (bootstrapped) return; + bootstrapped = true; + loadOutboxRelays() + .then((relays) => { + const urls = readUrls(relays); + if (urls.length > 0) store.set(urls); + }) + .catch(() => { + // Store behält seinen initialen FALLBACK-Zustand + }); +} + +export const readRelays: Readable = store;