Fix reposts without p tag not parsed

This commit is contained in:
futpib
2023-05-07 14:40:57 +04:00
committed by fiatjaf_
parent 424449c773
commit ac7598b5e3
2 changed files with 22 additions and 4 deletions

View File

@@ -2,10 +2,11 @@
const {nip18, finishEvent, getPublicKey, Kind} = require('./lib/nostr.cjs') const {nip18, finishEvent, getPublicKey, Kind} = require('./lib/nostr.cjs')
const relayUrl = 'https://relay.example.com'
describe('finishRepostEvent + getRepostedEventPointer + getRepostedEvent', () => { describe('finishRepostEvent + getRepostedEventPointer + getRepostedEvent', () => {
const privateKey = const privateKey =
'd217c1ff2f8a65c3e3a1740db3b9f58b8c848bb45e26d00ed4714e4a0f4ceecf' 'd217c1ff2f8a65c3e3a1740db3b9f58b8c848bb45e26d00ed4714e4a0f4ceecf'
const relayUrl = 'https://relay.example.com'
const publicKey = getPublicKey(privateKey) const publicKey = getPublicKey(privateKey)
@@ -99,3 +100,20 @@ describe('finishRepostEvent + getRepostedEventPointer + getRepostedEvent', () =>
expect(repostedEventFromContent).toEqual(undefined) expect(repostedEventFromContent).toEqual(undefined)
}) })
}) })
describe('getRepostedEventPointer', () => {
it('should parse an event with only an `e` tag', () => {
const event = {
kind: Kind.Repost,
tags: [
['e', 'reposted event id', relayUrl],
],
}
const repostedEventPointer = nip18.getRepostedEventPointer(event)
expect(repostedEventPointer.id).toEqual('reposted event id')
expect(repostedEventPointer.author).toEqual(undefined)
expect(repostedEventPointer.relays).toEqual([ relayUrl ])
})
})

View File

@@ -55,14 +55,14 @@ export function getRepostedEventPointer(event: Event<number>): undefined | Event
} }
} }
if (lastETag === undefined || lastPTag === undefined) { if (lastETag === undefined) {
return undefined return undefined
} }
return { return {
id: lastETag[1], id: lastETag[1],
relays: [ lastETag[2], lastPTag[2] ].filter((x) => x !== undefined), relays: [ lastETag[2], lastPTag?.[2] ].filter((x): x is string => typeof x === 'string'),
author: lastPTag[1], author: lastPTag?.[1],
} }
} }