Don't report ok to global onEvent when ok is false

This commit is contained in:
Jon Staab
2024-12-10 08:44:20 -08:00
parent 8978b77983
commit 03c5103ee9
2 changed files with 22 additions and 7 deletions
+6 -3
View File
@@ -68,10 +68,13 @@ export class Executor {
}
publish(event: SignedEvent, {verb = 'EVENT', onOk, onError}: PublishOpts = {}) {
const okListener = (url: string, id: string, ...payload: any[]) => {
const okListener = (url: string, id: string, ok: boolean, message: string) => {
if (id === event.id) {
ctx.net.onEvent(url, event)
onOk?.(url, id, ...payload)
if (ok) {
ctx.net.onEvent(url, event)
}
onOk?.(url, id, ok, message)
}
}
+16 -4
View File
@@ -17,8 +17,18 @@ export class Tracker extends Emitter {
hasRelay = (eventId: string, relay: string) => this.relaysById.get(eventId)?.has(relay)
addRelay = (eventId: string, relay: string) => {
const relays = this.relaysById.get(eventId) || new Set()
const ids = this.idsByRelay.get(relay) || new Set()
let relays = this.relaysById.get(eventId)
let ids = this.idsByRelay.get(relay)
if (relays?.has(relay) && ids?.has(eventId)) return
if (!relays) {
relays = new Set()
}
if (!ids) {
ids = new Set()
}
relays.add(relay)
ids.add(eventId)
@@ -30,8 +40,10 @@ export class Tracker extends Emitter {
}
removeRelay = (eventId: string, relay: string) => {
this.relaysById.get(eventId)?.delete(relay)
this.idsByRelay.get(relay)?.delete(eventId)
const didDeleteRelay = this.relaysById.get(eventId)?.delete(relay)
const didDeleteId = this.idsByRelay.get(relay)?.delete(eventId)
if (!didDeleteRelay && !didDeleteId) return
this.emit('update')
}