relay: handle ephemeral relays in PostBox
We need to make sure ephemeral relay events (not ephemeral events) are handled properly in the postbox. Make sure we pass the proper skip_ephemeral flag to the relay pool if we add something like a NWC event to the PostBox. Events are not sent to ephemeral relays by default.
This commit is contained in:
@@ -24,10 +24,12 @@ class Relayer {
|
|||||||
|
|
||||||
class PostedEvent {
|
class PostedEvent {
|
||||||
let event: NostrEvent
|
let event: NostrEvent
|
||||||
|
let skip_ephemeral: Bool
|
||||||
var remaining: [Relayer]
|
var remaining: [Relayer]
|
||||||
|
|
||||||
init(event: NostrEvent, remaining: [String]) {
|
init(event: NostrEvent, remaining: [String], skip_ephemeral: Bool) {
|
||||||
self.event = event
|
self.event = event
|
||||||
|
self.skip_ephemeral = skip_ephemeral
|
||||||
self.remaining = remaining.map {
|
self.remaining = remaining.map {
|
||||||
Relayer(relay: $0, attempts: 0, retry_after: 2.0)
|
Relayer(relay: $0, attempts: 0, retry_after: 2.0)
|
||||||
}
|
}
|
||||||
@@ -93,19 +95,18 @@ class PostBox {
|
|||||||
relayer.attempts += 1
|
relayer.attempts += 1
|
||||||
relayer.last_attempt = Int64(Date().timeIntervalSince1970)
|
relayer.last_attempt = Int64(Date().timeIntervalSince1970)
|
||||||
relayer.retry_after *= 1.5
|
relayer.retry_after *= 1.5
|
||||||
pool.send(.event(event.event), to: [relayer.relay])
|
pool.send(.event(event.event), to: [relayer.relay], skip_ephemeral: event.skip_ephemeral)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func send(_ event: NostrEvent) {
|
func send(_ event: NostrEvent, to: [String]? = nil, skip_ephemeral: Bool = true) {
|
||||||
// Don't add event if we already have it
|
// Don't add event if we already have it
|
||||||
if events[event.id] != nil {
|
if events[event.id] != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let remaining = pool.descriptors.map { $0.url.id }
|
let remaining = to ?? pool.descriptors.map { $0.url.id }
|
||||||
|
let posted_ev = PostedEvent(event: event, remaining: remaining, skip_ephemeral: skip_ephemeral)
|
||||||
let posted_ev = PostedEvent(event: event, remaining: remaining)
|
|
||||||
events[event.id] = posted_ev
|
events[event.id] = posted_ev
|
||||||
|
|
||||||
flush_event(posted_ev)
|
flush_event(posted_ev)
|
||||||
|
|||||||
Reference in New Issue
Block a user