fix profile not loading

This commit is contained in:
nrobi144
2026-01-05 06:46:19 +02:00
parent 64eec9844b
commit 115c622dca
5 changed files with 23 additions and 20 deletions
@@ -104,18 +104,8 @@ open class RelayConnectionManager(
* Events will be sent to relays as they become connected. * Events will be sent to relays as they become connected.
*/ */
fun broadcastToAll(event: Event) { fun broadcastToAll(event: Event) {
// Use all configured relays, not just currently connected ones
// The NostrClient will queue/send events as relays connect
val configuredRelays = relayStatuses.value.keys val configuredRelays = relayStatuses.value.keys
val connectedCount = connectedRelays.value.size
println("[RelayManager] broadcastToAll: event kind=${event.kind}, ID=${event.id.take(8)}...")
println("[RelayManager] Configured relays: ${configuredRelays.size}, Connected: $connectedCount")
configuredRelays.forEach { relay ->
val isConnected = connectedRelays.value.contains(relay)
println("[RelayManager] - $relay: ${if (isConnected) "CONNECTED" else "pending"}")
}
send(event, configuredRelays) send(event, configuredRelays)
println("[RelayManager] broadcastToAll complete")
} }
private fun updateRelayStatus( private fun updateRelayStatus(
@@ -81,7 +81,7 @@ fun createContactListSubscription(
onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> }, onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> },
): SubscriptionConfig = ): SubscriptionConfig =
SubscriptionConfig( SubscriptionConfig(
subId = generateSubId("contact-list-$pubKeyHex"), subId = generateSubId("contacts-${pubKeyHex.take(8)}"),
filters = listOf(FilterBuilders.contactList(pubKeyHex)), filters = listOf(FilterBuilders.contactList(pubKeyHex)),
relays = relays, relays = relays,
onEvent = onEvent, onEvent = onEvent,
@@ -35,7 +35,7 @@ fun createMetadataSubscription(
onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> }, onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> },
): SubscriptionConfig = ): SubscriptionConfig =
SubscriptionConfig( SubscriptionConfig(
subId = generateSubId("profile-metadata-$pubKeyHex"), subId = generateSubId("meta-${pubKeyHex.take(8)}"),
filters = listOf(FilterBuilders.userMetadata(pubKeyHex)), filters = listOf(FilterBuilders.userMetadata(pubKeyHex)),
relays = relays, relays = relays,
onEvent = onEvent, onEvent = onEvent,
@@ -53,7 +53,7 @@ fun createUserPostsSubscription(
onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> }, onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> },
): SubscriptionConfig = ): SubscriptionConfig =
SubscriptionConfig( SubscriptionConfig(
subId = generateSubId("profile-posts-$pubKeyHex"), subId = generateSubId("posts-${pubKeyHex.take(8)}"),
filters = listOf(FilterBuilders.textNotesFromAuthors(listOf(pubKeyHex), limit = limit)), filters = listOf(FilterBuilders.textNotesFromAuthors(listOf(pubKeyHex), limit = limit)),
relays = relays, relays = relays,
onEvent = onEvent, onEvent = onEvent,
@@ -71,7 +71,7 @@ fun createNotificationsSubscription(
onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> }, onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> },
): SubscriptionConfig = ): SubscriptionConfig =
SubscriptionConfig( SubscriptionConfig(
subId = generateSubId("notifications-$pubKeyHex"), subId = generateSubId("notif-${pubKeyHex.take(8)}"),
filters = listOf(FilterBuilders.notificationsForUser(pubKeyHex, limit = limit)), filters = listOf(FilterBuilders.notificationsForUser(pubKeyHex, limit = limit)),
relays = relays, relays = relays,
onEvent = onEvent, onEvent = onEvent,
@@ -138,29 +138,39 @@ fun FeedScreen(
} }
// Clear events when feed mode changes // Clear events when feed mode changes
remember(feedMode) { eventState.clear() } remember(feedMode) {
eventState.clear()
}
// Subscribe to feed based on mode // Subscribe to feed based on mode
rememberSubscription(relayStatuses, feedMode, followedUsers, relayManager = relayManager) { rememberSubscription(relayStatuses, feedMode, followedUsers, relayManager = relayManager) {
val configuredRelays = relayStatuses.keys val configuredRelays = relayStatuses.keys
if (configuredRelays.isEmpty()) return@rememberSubscription null if (configuredRelays.isEmpty()) {
return@rememberSubscription null
}
when (feedMode) { when (feedMode) {
FeedMode.GLOBAL -> FeedMode.GLOBAL -> {
createGlobalFeedSubscription( createGlobalFeedSubscription(
relays = configuredRelays, relays = configuredRelays,
onEvent = { event, _, _, _ -> eventState.addItem(event) }, onEvent = { event, _, _, _ ->
eventState.addItem(event)
},
) )
FeedMode.FOLLOWING -> }
FeedMode.FOLLOWING -> {
if (followedUsers.isNotEmpty()) { if (followedUsers.isNotEmpty()) {
createFollowingFeedSubscription( createFollowingFeedSubscription(
relays = configuredRelays, relays = configuredRelays,
followedUsers = followedUsers.toList(), followedUsers = followedUsers.toList(),
onEvent = { event, _, _, _ -> eventState.addItem(event) }, onEvent = { event, _, _, _ ->
eventState.addItem(event)
},
) )
} else { } else {
null null
} }
}
} }
} }
@@ -174,6 +174,8 @@ fun UserProfileScreen(
rememberSubscription(relayStatuses, pubKeyHex, retryTrigger, relayManager = relayManager) { rememberSubscription(relayStatuses, pubKeyHex, retryTrigger, relayManager = relayManager) {
val configuredRelays = relayStatuses.keys val configuredRelays = relayStatuses.keys
if (configuredRelays.isNotEmpty()) { if (configuredRelays.isNotEmpty()) {
postsLoading = true
postsError = null
createUserPostsSubscription( createUserPostsSubscription(
relays = configuredRelays, relays = configuredRelays,
pubKeyHex = pubKeyHex, pubKeyHex = pubKeyHex,
@@ -225,6 +227,7 @@ fun UserProfileScreen(
} }
followState.setFollowSuccess(updatedEvent, pubKeyHex) followState.setFollowSuccess(updatedEvent, pubKeyHex)
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace()
followState.setFollowError(e.message ?: "Failed to update follow status", e) followState.setFollowError(e.message ?: "Failed to update follow status", e)
} }
} }