From 6ed1252eeda7a3845714899b3c7efaf543b18948 Mon Sep 17 00:00:00 2001 From: kPherox Date: Thu, 16 Feb 2023 07:26:26 +0900 Subject: [PATCH] feat: render kind 1 reposts --- packages/app/src/Element/Note.tsx | 18 +++++++++++++++++- packages/app/src/Element/NoteReaction.tsx | 9 +++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/packages/app/src/Element/Note.tsx b/packages/app/src/Element/Note.tsx index 04925cc..cccfc36 100644 --- a/packages/app/src/Element/Note.tsx +++ b/packages/app/src/Element/Note.tsx @@ -21,6 +21,7 @@ import { setPinned, setBookmarked } from "State/Login"; import type { RootState } from "State/Store"; import messages from "./messages"; +import NoteReaction from "./NoteReaction"; export interface NoteProps { data?: TaggedRawEvent; @@ -65,6 +66,12 @@ export default function Note(props: NoteProps) { const { data, related, highlight, options: opt, ["data-ev"]: parsedEvent, ignoreModeration = false } = props; const [showReactions, setShowReactions] = useState(false); const ev = useMemo(() => parsedEvent ?? new NEvent(data), [data]); + if ( + ev.Kind === EventKind.TextNote && + ev.Tags.some((a, i) => a.Key === "e" && a.Marker === "mention" && ev.Content === `#[${i}]`) + ) { + return ; + } const pubKeys = useMemo(() => ev.Thread?.PubKeys || [], [ev]); const users = useUserProfiles(pubKeys); const deletions = useMemo(() => getReactions(related, ev.Id, EventKind.Deletion), [related]); @@ -98,7 +105,16 @@ export default function Note(props: NoteProps) { }, [reactions]); const positive = groupReactions[Reaction.Positive]; const negative = groupReactions[Reaction.Negative]; - const reposts = useMemo(() => dedupeByPubkey(getReactions(related, ev.Id, EventKind.Repost)), [related, ev]); + const reposts = useMemo( + () => + dedupeByPubkey([ + ...getReactions(related, ev.Id, EventKind.TextNote).filter(e => + e.tags.some((a, i) => a[0] === "e" && a[1] === ev.Id && a[3] === "mention" && e.content === `#[${i}]`) + ), + ...getReactions(related, ev.Id, EventKind.Repost), + ]), + [related, ev] + ); const zaps = useMemo(() => { const sortedZaps = getReactions(related, ev.Id, EventKind.ZapReceipt) .map(parseZap) diff --git a/packages/app/src/Element/NoteReaction.tsx b/packages/app/src/Element/NoteReaction.tsx index 7b4091e..c1de29b 100644 --- a/packages/app/src/Element/NoteReaction.tsx +++ b/packages/app/src/Element/NoteReaction.tsx @@ -30,7 +30,12 @@ export default function NoteReaction(props: NoteReactionProps) { return null; }, [ev]); - if (ev.Kind !== EventKind.Reaction && ev.Kind !== EventKind.Repost) { + if ( + ev.Kind !== EventKind.Reaction && + ev.Kind !== EventKind.Repost && + (ev.Kind !== EventKind.TextNote || + ev.Tags.every((a, i) => a.Event !== refEvent || a.Marker !== "mention" || ev.Content !== `#[${i}]`)) + ) { return null; } @@ -52,7 +57,7 @@ export default function NoteReaction(props: NoteReactionProps) { const root = extractRoot(); const isOpMuted = root && isMuted(root.pubkey); const opt = { - showHeader: ev?.Kind === EventKind.Repost, + showHeader: ev?.Kind === EventKind.Repost || ev?.Kind === EventKind.TextNote, showFooter: false, };