Bug fix for publishing directly to a relay

This commit is contained in:
Kgothatso Ngako committed 2026-05-05 20:31:43 +02:00
1 parent 58a98f68ae
commit a268a9ab71
3 files changed
+12 -9

No files matched your search

@@ -170,14 +170,17 @@ class RelayPool(
@Throws(NostrPublishException::class) @Throws(NostrPublishException::class)
suspend fun publishEvent(nostrEvent: NostrEvent, relays: Set<RelayDTO> = emptySet()): Flow<NostrPublishResult> { suspend fun publishEvent(nostrEvent: NostrEvent, relays: Set<RelayDTO> = emptySet()): Flow<NostrPublishResult> {
val relayUrls = relays.map { it.url } val relayUrls = relays.map { NormalizedRelayUrl(it.url).displayUrl() }
return if (relayUrls.isEmpty()) { return if (relayUrls.isEmpty()) {
logger.w("Empty Relays")
handlePublishEventToRelays(socketClients, nostrEvent) handlePublishEventToRelays(socketClients, nostrEvent)
} else { } else {
logger.d("Add Relays: $relays")
addRelaysIfMissing(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) handlePublishEventToRelays(filteredSocketClients.toSet(), nostrEvent)
} }
@@ -122,6 +122,7 @@ class RelaysSocketManager constructor(
@Throws(NostrPublishException::class) @Throws(NostrPublishException::class)
suspend fun publishEvent(nostrEvent: NostrEvent, relays: Set<RelayDTO>): Flow<NostrPublishResult> { suspend fun publishEvent(nostrEvent: NostrEvent, relays: Set<RelayDTO>): Flow<NostrPublishResult> {
logger.d("publishEvent: $nostrEvent")
return relayPool.publishEvent( return relayPool.publishEvent(
nostrEvent = nostrEvent, nostrEvent = nostrEvent,
relays = relays relays = relays
@@ -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.database.model.types.SynchronizationFilter
import ac.cord.auxiliary.compose.managers.SeedManager import ac.cord.auxiliary.compose.managers.SeedManager
import ac.cord.auxiliary.compose.network.dto.RelayDTO 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.RelayPool.Companion.PUBLISH_TIMEOUT
import ac.cord.auxiliary.compose.network.relays.RelaysSocketManager import ac.cord.auxiliary.compose.network.relays.RelaysSocketManager
import ac.cord.auxiliary.compose.network.sockets.NostrIncomingMessage 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( BroadcastNostrEventRequest(
nostrEventId = nostrEventId.toHexString(), nostrEventId = sendId.toHexString(),
relayURL = negentropySynchronizeRequest.relayURL relayURL = negentropySynchronizeRequest.relayURL
) )
} }
logger.d("broadcastNostrEventRequests: $broadcastNostrEventRequests")
nostrRepository.scheduleBroadcastNostrEventRequests( nostrRepository.scheduleBroadcastNostrEventRequests(
broadcastNostrEventRequests broadcastNostrEventRequests
) )
@@ -443,11 +446,7 @@ class NavigationViewModel(
relaysSocketManager.publishEvent( relaysSocketManager.publishEvent(
localBroadcastNostrEventRequest.nostrEvent, localBroadcastNostrEventRequest.nostrEvent,
setOf( setOf(
RelayDTO( localBroadcastNostrEventRequest.broadcastNostrEventRequest.relayURL.toRelayDTO()
localBroadcastNostrEventRequest.broadcastNostrEventRequest.relayURL,
write = true,
read = true
)
) )
).timeout(PUBLISH_TIMEOUT.milliseconds).catch { ).timeout(PUBLISH_TIMEOUT.milliseconds).catch {
// Timeout... // Timeout...