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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user