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.
*/
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 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)
println("[RelayManager] broadcastToAll complete")
}
private fun updateRelayStatus(
@@ -81,7 +81,7 @@ fun createContactListSubscription(
onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> },
): SubscriptionConfig =
SubscriptionConfig(
subId = generateSubId("contact-list-$pubKeyHex"),
subId = generateSubId("contacts-${pubKeyHex.take(8)}"),
filters = listOf(FilterBuilders.contactList(pubKeyHex)),
relays = relays,
onEvent = onEvent,
@@ -35,7 +35,7 @@ fun createMetadataSubscription(
onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> },
): SubscriptionConfig =
SubscriptionConfig(
subId = generateSubId("profile-metadata-$pubKeyHex"),
subId = generateSubId("meta-${pubKeyHex.take(8)}"),
filters = listOf(FilterBuilders.userMetadata(pubKeyHex)),
relays = relays,
onEvent = onEvent,
@@ -53,7 +53,7 @@ fun createUserPostsSubscription(
onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> },
): SubscriptionConfig =
SubscriptionConfig(
subId = generateSubId("profile-posts-$pubKeyHex"),
subId = generateSubId("posts-${pubKeyHex.take(8)}"),
filters = listOf(FilterBuilders.textNotesFromAuthors(listOf(pubKeyHex), limit = limit)),
relays = relays,
onEvent = onEvent,
@@ -71,7 +71,7 @@ fun createNotificationsSubscription(
onEose: (NormalizedRelayUrl, List<Filter>?) -> Unit = { _, _ -> },
): SubscriptionConfig =
SubscriptionConfig(
subId = generateSubId("notifications-$pubKeyHex"),
subId = generateSubId("notif-${pubKeyHex.take(8)}"),
filters = listOf(FilterBuilders.notificationsForUser(pubKeyHex, limit = limit)),
relays = relays,
onEvent = onEvent,
@@ -138,29 +138,39 @@ fun FeedScreen(
}
// Clear events when feed mode changes
remember(feedMode) { eventState.clear() }
remember(feedMode) {
eventState.clear()
}
// Subscribe to feed based on mode
rememberSubscription(relayStatuses, feedMode, followedUsers, relayManager = relayManager) {
val configuredRelays = relayStatuses.keys
if (configuredRelays.isEmpty()) return@rememberSubscription null
if (configuredRelays.isEmpty()) {
return@rememberSubscription null
}
when (feedMode) {
FeedMode.GLOBAL ->
FeedMode.GLOBAL -> {
createGlobalFeedSubscription(
relays = configuredRelays,
onEvent = { event, _, _, _ -> eventState.addItem(event) },
onEvent = { event, _, _, _ ->
eventState.addItem(event)
},
)
FeedMode.FOLLOWING ->
}
FeedMode.FOLLOWING -> {
if (followedUsers.isNotEmpty()) {
createFollowingFeedSubscription(
relays = configuredRelays,
followedUsers = followedUsers.toList(),
onEvent = { event, _, _, _ -> eventState.addItem(event) },
onEvent = { event, _, _, _ ->
eventState.addItem(event)
},
)
} else {
null
}
}
}
}
@@ -174,6 +174,8 @@ fun UserProfileScreen(
rememberSubscription(relayStatuses, pubKeyHex, retryTrigger, relayManager = relayManager) {
val configuredRelays = relayStatuses.keys
if (configuredRelays.isNotEmpty()) {
postsLoading = true
postsError = null
createUserPostsSubscription(
relays = configuredRelays,
pubKeyHex = pubKeyHex,
@@ -225,6 +227,7 @@ fun UserProfileScreen(
}
followState.setFollowSuccess(updatedEvent, pubKeyHex)
} catch (e: Exception) {
e.printStackTrace()
followState.setFollowError(e.message ?: "Failed to update follow status", e)
}
}