fix: Use configured relays to initiate subscriptions

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 <noreply@anthropic.com>
This commit is contained in:
nrobi144
2025-12-26 14:10:02 +02:00
parent 8c8a4ab9e8
commit 59eeb1ff0c
@@ -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<Event>() }
val seenIds = remember { mutableSetOf<String>() }
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,