From fce437fe68757ed5b3ff91af1a4ec7663141fe1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20G=C3=B3mez?= Date: Sat, 13 Dec 2025 21:34:03 +0100 Subject: [PATCH] fix: hide embeds in replies --- src/components/nostr/RichText.tsx | 3 ++ src/components/nostr/RichText/Mention.tsx | 30 +++++++++++++++++++- src/components/nostr/kinds/Kind1Renderer.tsx | 5 +++- src/components/nostr/kinds/Kind9Renderer.tsx | 5 +++- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/components/nostr/RichText.tsx b/src/components/nostr/RichText.tsx index 368135f..8f0a1c1 100644 --- a/src/components/nostr/RichText.tsx +++ b/src/components/nostr/RichText.tsx @@ -30,6 +30,8 @@ export interface RichTextOptions { showAudio?: boolean; /** Convenience flag to disable all media at once (default: true) */ showMedia?: boolean; + /** Show event embeds for note/nevent/naddr mentions (default: true) */ + showEventEmbeds?: boolean; } // Default options @@ -38,6 +40,7 @@ const defaultOptions: Required = { showVideos: true, showAudio: true, showMedia: true, + showEventEmbeds: true, }; // Context for passing options through RichText rendering diff --git a/src/components/nostr/RichText/Mention.tsx b/src/components/nostr/RichText/Mention.tsx index 17fedcd..428a85c 100644 --- a/src/components/nostr/RichText/Mention.tsx +++ b/src/components/nostr/RichText/Mention.tsx @@ -2,7 +2,7 @@ import { kinds } from "nostr-tools"; import { UserName } from "../UserName"; import { EventEmbed } from "./EventEmbed"; import { EventPointer, AddressPointer } from "nostr-tools/nip19"; -import { useDepth } from "../RichText"; +import { useDepth, useRichTextOptions } from "../RichText"; interface MentionNodeProps { node: { @@ -16,6 +16,7 @@ interface MentionNodeProps { export function Mention({ node }: MentionNodeProps) { const depth = useDepth(); + const options = useRichTextOptions(); if (node.decoded?.type === "npub") { const pubkey = node.decoded.data; @@ -46,16 +47,43 @@ export function Mention({ node }: MentionNodeProps) { kind: kinds.ShortTextNote, relays: [], }; + + if (!options.showEventEmbeds) { + return ( + + {node.encoded || `note:${pointer.id.slice(0, 8)}...`} + + ); + } + return ; } if (node.decoded?.type === "nevent") { const pointer: EventPointer = node.decoded.data; + + if (!options.showEventEmbeds) { + return ( + + {node.encoded || `nevent:${pointer.id.slice(0, 8)}...`} + + ); + } + return ; } if (node.decoded?.type === "naddr") { const pointer: AddressPointer = node.decoded.data; + + if (!options.showEventEmbeds) { + return ( + + {node.encoded || `naddr:${pointer.identifier || pointer.pubkey.slice(0, 8)}...`} + + ); + } + return ; } diff --git a/src/components/nostr/kinds/Kind1Renderer.tsx b/src/components/nostr/kinds/Kind1Renderer.tsx index 8ab6490..2f8ecd3 100644 --- a/src/components/nostr/kinds/Kind1Renderer.tsx +++ b/src/components/nostr/kinds/Kind1Renderer.tsx @@ -42,7 +42,10 @@ export function Kind1Renderer({ event, depth = 0 }: BaseEventProps) { className="flex-shrink-0 text-accent" />
- +
diff --git a/src/components/nostr/kinds/Kind9Renderer.tsx b/src/components/nostr/kinds/Kind9Renderer.tsx index 076e0b5..65e5ac3 100644 --- a/src/components/nostr/kinds/Kind9Renderer.tsx +++ b/src/components/nostr/kinds/Kind9Renderer.tsx @@ -49,7 +49,10 @@ export function Kind9Renderer({ event, depth = 0 }: BaseEventProps) { className="flex-shrink-0 text-accent" />
- +