diff --git a/src/components/NoteCard/RepostNoteCard.tsx b/src/components/NoteCard/RepostNoteCard.tsx index 0dfd636..6741fc9 100644 --- a/src/components/NoteCard/RepostNoteCard.tsx +++ b/src/components/NoteCard/RepostNoteCard.tsx @@ -33,44 +33,47 @@ export default function RepostNoteCard({ }, [targetEvent, filterMutedNotes, hideContentMentioningMutedUsers, mutePubkeySet]) useEffect(() => { const fetch = async () => { - try { - const eventFromContent = event.content ? (JSON.parse(event.content) as Event) : null - if (eventFromContent && verifyEvent(eventFromContent)) { - if (eventFromContent.kind === kinds.Repost) { - return - } - client.addEventToCache(eventFromContent) - const targetSeenOn = client.getSeenEventRelays(eventFromContent.id) - if (targetSeenOn.length === 0) { - const seenOn = client.getSeenEventRelays(event.id) - seenOn.forEach((relay) => { - client.trackEventSeenOn(eventFromContent.id, relay) - }) - } - setTargetEvent(eventFromContent) + let eventFromContent: Event | null = null + if (event.content) { + try { + eventFromContent = JSON.parse(event.content) as Event + } catch { + eventFromContent = null + } + } + if (eventFromContent && verifyEvent(eventFromContent)) { + if (eventFromContent.kind === kinds.Repost) { return } + client.addEventToCache(eventFromContent) + const targetSeenOn = client.getSeenEventRelays(eventFromContent.id) + if (targetSeenOn.length === 0) { + const seenOn = client.getSeenEventRelays(event.id) + seenOn.forEach((relay) => { + client.trackEventSeenOn(eventFromContent.id, relay) + }) + } + setTargetEvent(eventFromContent) + return + } - let targetEventId: string | undefined - const aTag = event.tags.find(tagNameEquals('a')) - if (aTag) { - targetEventId = generateBech32IdFromATag(aTag) - } else { - const eTag = event.tags.find(tagNameEquals('e')) - if (eTag) { - targetEventId = generateBech32IdFromETag(eTag) - } - } - if (!targetEventId) { - return + let targetEventId: string | undefined + const aTag = event.tags.find(tagNameEquals('a')) + if (aTag) { + targetEventId = generateBech32IdFromATag(aTag) + } else { + const eTag = event.tags.find(tagNameEquals('e')) + if (eTag) { + targetEventId = generateBech32IdFromETag(eTag) } + } + if (!targetEventId) { + return + } - const targetEvent = await client.fetchEvent(targetEventId) - if (targetEvent) { - setTargetEvent(targetEvent) - } - } catch { - // ignore + const targetEvent = await client.fetchEvent(targetEventId) + if (targetEvent) { + setTargetEvent(targetEvent) } } fetch() diff --git a/src/components/NoteList/index.tsx b/src/components/NoteList/index.tsx index 4fb2ba7..21fa156 100644 --- a/src/components/NoteList/index.tsx +++ b/src/components/NoteList/index.tsx @@ -133,7 +133,14 @@ const NoteList = forwardRef( return } - const eventFromContent = evt.content ? (JSON.parse(evt.content) as Event) : null + let eventFromContent: Event | null = null + if (evt.content) { + try { + eventFromContent = JSON.parse(evt.content) as Event + } catch { + eventFromContent = null + } + } if (eventFromContent && verifyEvent(eventFromContent)) { if (eventFromContent.kind === kinds.Repost) { return