From e9ebf1bc00b6fce6e26871b745c576f87d6f4c11 Mon Sep 17 00:00:00 2001 From: codytseng Date: Tue, 21 Jan 2025 22:58:22 +0800 Subject: [PATCH] fix: attempt to fix issue of no parent reply --- src/lib/draft-event.ts | 2 +- src/lib/event.ts | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/lib/draft-event.ts b/src/lib/draft-event.ts index 2a334cd3..083538d5 100644 --- a/src/lib/draft-event.ts +++ b/src/lib/draft-event.ts @@ -60,7 +60,7 @@ export async function createShortTextNoteDraftEvent( const tags = pubkeys .map((pubkey) => ['p', pubkey]) .concat(otherRelatedEventIds.map((eventId) => ['e', eventId])) - .concat(quoteEventIds.map((eventId) => ['q', eventId])) + .concat(quoteEventIds.map((eventId) => ['q', eventId, '', 'mention'])) .concat(hashtags.map((hashtag) => ['t', hashtag])) if (rootEventId) { diff --git a/src/lib/event.ts b/src/lib/event.ts index 1e386181..b2fe8219 100644 --- a/src/lib/event.ts +++ b/src/lib/event.ts @@ -17,17 +17,20 @@ export function isReplyNoteEvent(event: Event) { if (event.kind !== kinds.ShortTextNote) return false let hasETag = false - let hasMarker = false + let hasMentionMarker = false for (const [tagName, , , marker] of event.tags) { if (tagName !== 'e') continue hasETag = true if (!marker) continue - hasMarker = true + if (marker === 'mention') { + hasMentionMarker = true + continue + } if (['root', 'reply'].includes(marker)) return true } - return hasETag && !hasMarker + return hasETag && !hasMentionMarker } export function isCommentEvent(event: Event) { @@ -39,11 +42,13 @@ export function isPictureEvent(event: Event) { } export function getParentEventId(event?: Event) { - return event?.tags.find(isReplyETag)?.[1] + if (!event || !isReplyNoteEvent(event)) return undefined + return event.tags.find(isReplyETag)?.[1] ?? event.tags.find(tagNameEquals('e'))?.[1] } export function getRootEventId(event?: Event) { - return event?.tags.find(isRootETag)?.[1] + if (!event || !isReplyNoteEvent(event)) return undefined + return event.tags.find(isRootETag)?.[1] } export function isReplaceable(kind: number) {