From 59eeb1ff0ca3691ec90dd2b0b273b73e0a9d2b3d Mon Sep 17 00:00:00 2001 From: nrobi144 Date: Fri, 26 Dec 2025 14:10:02 +0200 Subject: [PATCH] fix: Use configured relays to initiate subscriptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The FeedScreen was waiting for connectedRelays to be non-empty before subscribing, but relays are only added to the NostrClient pool when subscriptions request them. This created a deadlock where no relays would ever connect. Now uses relayStatuses.keys (configured relays) to initiate the subscription, which triggers the NostrClient to add those relays to its pool and connect to them. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../vitorpamplona/amethyst/desktop/ui/FeedScreen.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt index 139326a7d..8eef7d1e6 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/FeedScreen.kt @@ -69,11 +69,16 @@ import java.util.Locale @Composable fun FeedScreen(relayManager: DesktopRelayConnectionManager) { val connectedRelays by relayManager.connectedRelays.collectAsState() + val relayStatuses by relayManager.relayStatuses.collectAsState() val events = remember { mutableStateListOf() } val seenIds = remember { mutableSetOf() } - DisposableEffect(connectedRelays) { - if (connectedRelays.isNotEmpty()) { + // Use relayStatuses.keys (configured relays) to initiate subscription, + // not connectedRelays (which is empty until subscriptions trigger connections) + val configuredRelays = relayStatuses.keys + + DisposableEffect(configuredRelays) { + if (configuredRelays.isNotEmpty()) { val subId = "global-feed-${System.currentTimeMillis()}" val filters = listOf( Filter( @@ -85,7 +90,7 @@ fun FeedScreen(relayManager: DesktopRelayConnectionManager) { relayManager.subscribe( subId = subId, filters = filters, - relays = connectedRelays, + relays = configuredRelays, listener = object : IRequestListener { override fun onEvent( event: Event,