Skip to content

Commit 4b2b032

Browse files
committed
refactor: combine vanish validation and kind check
1 parent 2bdcb3f commit 4b2b032

3 files changed

Lines changed: 22 additions & 14 deletions

File tree

src/handlers/event-message-handler.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ContextMetadataKey, EventExpirationTimeMetadataKey } from '../constants/base'
1+
import { ContextMetadataKey, EventExpirationTimeMetadataKey, EventKinds } from '../constants/base'
22
import { Event, ExpiringEvent } from '../@types/event'
33
import { EventRateLimit, FeeSchedule, Settings } from '../@types/settings'
44
import {
@@ -12,7 +12,6 @@ import {
1212
isEventSignatureValid,
1313
isExpiredEvent,
1414
isRequestToVanishEvent,
15-
isValidRequestToVanishEvent,
1615
} from '../utils/event'
1716
import { IEventRepository, IUserRepository } from '../@types/repositories'
1817
import { IEventStrategy, IMessageHandler } from '../@types/message-handlers'
@@ -210,7 +209,7 @@ export class EventMessageHandler implements IMessageHandler {
210209
return 'invalid: event signature verification failed'
211210
}
212211

213-
if (isRequestToVanishEvent(event) && !isValidRequestToVanishEvent(event, this.settings().info.relay_url)) {
212+
if (event.kind === EventKinds.REQUEST_TO_VANISH && !isRequestToVanishEvent(event, this.settings().info.relay_url)) {
214213
return 'invalid: request to vanish relay tag invalid'
215214
}
216215
}

src/utils/event.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,15 @@ export const isDeleteEvent = (event: Event): boolean => {
225225
return event.kind === EventKinds.DELETE
226226
}
227227

228-
export const isRequestToVanishEvent = (event: Event): boolean => {
229-
return event.kind === EventKinds.REQUEST_TO_VANISH
230-
}
228+
export const isRequestToVanishEvent = (event: Event, relayUrl?: string): boolean => {
229+
if (event.kind !== EventKinds.REQUEST_TO_VANISH) {
230+
return false
231+
}
232+
233+
if (typeof relayUrl === 'undefined') {
234+
return true
235+
}
231236

232-
export const isValidRequestToVanishEvent = (event: Event, relayUrl: string): boolean => {
233237
const relayTags = event.tags
234238
.filter((tag) => tag.length >= 2 && tag[0] === EventTags.Relay)
235239
.map((tag) => tag[1])

test/unit/utils/event.spec.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
isParameterizedReplaceableEvent,
1212
isReplaceableEvent,
1313
isRequestToVanishEvent,
14-
isValidRequestToVanishEvent,
1514
serializeEvent,
1615
} from '../../../src/utils/event'
1716
import { expect } from 'chai'
@@ -432,39 +431,45 @@ describe('NIP-62', () => {
432431
} as any
433432
expect(isRequestToVanishEvent(event)).to.be.false
434433
})
435-
})
436434

437-
describe('isValidRequestToVanishEvent', () => {
438435
it('returns true when event contains the relay URL', () => {
439436
const event: Event = {
440437
kind: 62,
441438
tags: [[EventTags.Relay, 'relay_url']],
442439
} as any
443-
expect(isValidRequestToVanishEvent(event, 'relay_url')).to.be.true
440+
expect(isRequestToVanishEvent(event, 'relay_url')).to.be.true
444441
})
445442

446443
it('returns true when event contains ALL_RELAYS', () => {
447444
const event: Event = {
448445
kind: 62,
449446
tags: [[EventTags.Relay, ALL_RELAYS]],
450447
} as any
451-
expect(isValidRequestToVanishEvent(event, 'relay_url')).to.be.true
448+
expect(isRequestToVanishEvent(event, 'relay_url')).to.be.true
452449
})
453450

454451
it('returns false when relay tag does not match', () => {
455452
const event: Event = {
456453
kind: 62,
457454
tags: [[EventTags.Relay, 'other_relay_url']],
458455
} as any
459-
expect(isValidRequestToVanishEvent(event, 'relay_url')).to.be.false
456+
expect(isRequestToVanishEvent(event, 'relay_url')).to.be.false
460457
})
461458

462459
it('returns false when there are no relay tags', () => {
463460
const event: Event = {
464461
kind: 62,
465462
tags: [],
466463
} as any
467-
expect(isValidRequestToVanishEvent(event, 'relay_url')).to.be.false
464+
expect(isRequestToVanishEvent(event, 'relay_url')).to.be.false
465+
})
466+
467+
it('returns false when relay URL is provided for non-kind-62 event', () => {
468+
const event: Event = {
469+
kind: 1,
470+
tags: [[EventTags.Relay, 'relay_url']],
471+
} as any
472+
expect(isRequestToVanishEvent(event, 'relay_url')).to.be.false
468473
})
469474
})
470475
})

0 commit comments

Comments
 (0)