Bug fix for publishing directly to a relay
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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...
|
||||
|
||||
Reference in New Issue
Block a user