From a268a9ab71fa5e6cd8bfa1d1b0d7932d9a2cdfb3 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Tue, 5 May 2026 20:31:43 +0200 Subject: [PATCH] Bug fix for publishing directly to a relay --- .../auxiliary/compose/network/relays/RelayPool.kt | 7 +++++-- .../compose/network/relays/RelaysSocketManager.kt | 1 + .../compose/ui/view/model/NavigationViewModel.kt | 13 ++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/network/relays/RelayPool.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/network/relays/RelayPool.kt index 2281a718..6a6b7fe3 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/network/relays/RelayPool.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/network/relays/RelayPool.kt @@ -170,14 +170,17 @@ class RelayPool( @Throws(NostrPublishException::class) suspend fun publishEvent(nostrEvent: NostrEvent, relays: Set = emptySet()): Flow { - val relayUrls = relays.map { it.url } + val relayUrls = relays.map { NormalizedRelayUrl(it.url).displayUrl() } return if (relayUrls.isEmpty()) { + logger.w("Empty Relays") handlePublishEventToRelays(socketClients, nostrEvent) } else { + logger.d("Add Relays: $relays") addRelaysIfMissing(relays) - val filteredSocketClients = socketClients.filter { relayUrls.contains(it.socketUrl) } + val filteredSocketClients = socketClients.filter { NormalizedRelayUrl(it.socketUrl).displayUrl() in relayUrls } + logger.d("filteredSocketClients: ${filteredSocketClients.map { it.socketUrl }}") handlePublishEventToRelays(filteredSocketClients.toSet(), nostrEvent) } diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/network/relays/RelaysSocketManager.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/network/relays/RelaysSocketManager.kt index 5da9112b..25179fa4 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/network/relays/RelaysSocketManager.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/network/relays/RelaysSocketManager.kt @@ -122,6 +122,7 @@ class RelaysSocketManager constructor( @Throws(NostrPublishException::class) suspend fun publishEvent(nostrEvent: NostrEvent, relays: Set): Flow { + logger.d("publishEvent: $nostrEvent") return relayPool.publishEvent( nostrEvent = nostrEvent, relays = relays diff --git a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/view/model/NavigationViewModel.kt b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/view/model/NavigationViewModel.kt index ce2e781f..647f5118 100644 --- a/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/view/model/NavigationViewModel.kt +++ b/composeApp/src/commonMain/kotlin/ac/cord/auxiliary/compose/ui/view/model/NavigationViewModel.kt @@ -6,6 +6,7 @@ import ac.cord.auxiliary.compose.database.model.SynchronizeNostrEventRequest import ac.cord.auxiliary.compose.database.model.types.SynchronizationFilter import ac.cord.auxiliary.compose.managers.SeedManager import ac.cord.auxiliary.compose.network.dto.RelayDTO +import ac.cord.auxiliary.compose.network.dto.toRelayDTO import ac.cord.auxiliary.compose.network.relays.RelayPool.Companion.PUBLISH_TIMEOUT import ac.cord.auxiliary.compose.network.relays.RelaysSocketManager import ac.cord.auxiliary.compose.network.sockets.NostrIncomingMessage @@ -366,12 +367,14 @@ class NavigationViewModel( ) ) } - val broadcastNostrEventRequests = result.sendIds.map { nostrEventId -> + val eventIds = events.map { it.id } + val broadcastNostrEventRequests = result.sendIds.filter { it.toHexString() in eventIds }.map { sendId -> BroadcastNostrEventRequest( - nostrEventId = nostrEventId.toHexString(), + nostrEventId = sendId.toHexString(), relayURL = negentropySynchronizeRequest.relayURL ) } + logger.d("broadcastNostrEventRequests: $broadcastNostrEventRequests") nostrRepository.scheduleBroadcastNostrEventRequests( broadcastNostrEventRequests ) @@ -443,11 +446,7 @@ class NavigationViewModel( relaysSocketManager.publishEvent( localBroadcastNostrEventRequest.nostrEvent, setOf( - RelayDTO( - localBroadcastNostrEventRequest.broadcastNostrEventRequest.relayURL, - write = true, - read = true - ) + localBroadcastNostrEventRequest.broadcastNostrEventRequest.relayURL.toRelayDTO() ) ).timeout(PUBLISH_TIMEOUT.milliseconds).catch { // Timeout...