From 1032a4645656cb3e020e05558277964665a365e9 Mon Sep 17 00:00:00 2001 From: Gigi Date: Thu, 16 Oct 2025 22:37:45 +0200 Subject: [PATCH] fix: wait for bunker relay connections before marking signer ready - Decryption was hanging because relay connections weren't established - NostrConnectSigner sends requests via relays but pool wasn't connected - Now wait for at least one bunker relay to be connected (5s timeout) - Prevents decrypt/sign requests from being sent to unconnected relays - Adds detailed logging for connection status --- src/services/nostrConnect.ts | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/services/nostrConnect.ts b/src/services/nostrConnect.ts index e450afbe..0e74a19f 100644 --- a/src/services/nostrConnect.ts +++ b/src/services/nostrConnect.ts @@ -36,7 +36,33 @@ export async function reconnectBunkerSigner( ): Promise { // Add bunker relays to pool for signing communication if (account.signer.relays) { - pool.group(account.signer.relays) + const bunkerRelays = account.signer.relays + pool.group(bunkerRelays) + + // Wait for at least one bunker relay to be connected + // This ensures signing/decryption requests can be sent + console.log('[bunker] Waiting for relay connections...', bunkerRelays) + await new Promise((resolve) => { + const checkInterval = setInterval(() => { + const connectedRelays = bunkerRelays.filter(url => { + const relay = pool.relays.get(url) + return relay?.connected + }) + + if (connectedRelays.length > 0) { + console.log('[bunker] ✅ Connected to', connectedRelays.length, 'bunker relay(s)') + clearInterval(checkInterval) + resolve() + } + }, 100) + + // Timeout after 5 seconds + setTimeout(() => { + clearInterval(checkInterval) + console.warn('[bunker] ⚠️ Timeout waiting for relay connections, proceeding anyway') + resolve() + }, 5000) + }) } // Open signer subscription if not already listening