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;