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 = {}) { 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) { if (id === event.id) {
ctx.net.onEvent(url, event) if (ok) {
onOk?.(url, id, ...payload) 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) hasRelay = (eventId: string, relay: string) => this.relaysById.get(eventId)?.has(relay)
addRelay = (eventId: string, relay: string) => { addRelay = (eventId: string, relay: string) => {
const relays = this.relaysById.get(eventId) || new Set() let relays = this.relaysById.get(eventId)
const ids = this.idsByRelay.get(relay) || new Set() 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) relays.add(relay)
ids.add(eventId) ids.add(eventId)
@@ -30,8 +40,10 @@ export class Tracker extends Emitter {
} }
removeRelay = (eventId: string, relay: string) => { removeRelay = (eventId: string, relay: string) => {
this.relaysById.get(eventId)?.delete(relay) const didDeleteRelay = this.relaysById.get(eventId)?.delete(relay)
this.idsByRelay.get(relay)?.delete(eventId) const didDeleteId = this.idsByRelay.get(relay)?.delete(eventId)
if (!didDeleteRelay && !didDeleteId) return
this.emit('update') this.emit('update')
} }