Bug fix for publishing directly to a relay

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

View File

@@ -170,14 +170,17 @@ class RelayPool(
@Throws(NostrPublishException::class)
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()) {
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)
}

View File

@@ -122,6 +122,7 @@ class RelaysSocketManager constructor(
@Throws(NostrPublishException::class)
suspend fun publishEvent(nostrEvent: NostrEvent, relays: Set<RelayDTO>): Flow<NostrPublishResult> {
logger.d("publishEvent: $nostrEvent")
return relayPool.publishEvent(
nostrEvent = nostrEvent,
relays = relays

View File

@@ -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...