diff --git a/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/network/RelayConnectionManager.kt b/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/network/RelayConnectionManager.kt index b09c662ae..dc026c4d7 100644 --- a/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/network/RelayConnectionManager.kt +++ b/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/network/RelayConnectionManager.kt @@ -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( diff --git a/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/subscriptions/FeedSubscription.kt b/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/subscriptions/FeedSubscription.kt index 66454159c..9f65c2379 100644 --- a/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/subscriptions/FeedSubscription.kt +++ b/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/subscriptions/FeedSubscription.kt @@ -81,7 +81,7 @@ fun createContactListSubscription( onEose: (NormalizedRelayUrl, List?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( - subId = generateSubId("contact-list-$pubKeyHex"), + subId = generateSubId("contacts-${pubKeyHex.take(8)}"), filters = listOf(FilterBuilders.contactList(pubKeyHex)), relays = relays, onEvent = onEvent, diff --git a/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/subscriptions/ProfileSubscription.kt b/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/subscriptions/ProfileSubscription.kt index b1cbdaea4..446f7e1a0 100644 --- a/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/subscriptions/ProfileSubscription.kt +++ b/commons/src/jvmAndroid/kotlin/com/vitorpamplona/amethyst/commons/subscriptions/ProfileSubscription.kt @@ -35,7 +35,7 @@ fun createMetadataSubscription( onEose: (NormalizedRelayUrl, List?) -> 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?) -> 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?) -> Unit = { _, _ -> }, ): SubscriptionConfig = SubscriptionConfig( - subId = generateSubId("notifications-$pubKeyHex"), + subId = generateSubId("notif-${pubKeyHex.take(8)}"), filters = listOf(FilterBuilders.notificationsForUser(pubKeyHex, limit = limit)), relays = relays, onEvent = onEvent, 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 b162357e6..0636f2041 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 @@ -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 } + } } } diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt index 41402280c..cc0f51ebb 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/UserProfileScreen.kt @@ -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) } }