From 7b40df5d6c0c93c3289b2d83f7127aa4a3125eeb Mon Sep 17 00:00:00 2001 From: Hampus Date: Fri, 2 Oct 2026 17:25:33 +0200 Subject: [PATCH] fix(messages): keep spoilers on forwarded link embeds (#3124) --- .../src/features/channel/components/MessageAttachments.tsx | 1 + .../src/features/channel/components/embeds/ChannelEmbed.tsx | 5 +++-- .../components/embeds/channel_embed/ChannelEmbedShared.ts | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/fluxer_app/src/features/channel/components/MessageAttachments.tsx b/fluxer_app/src/features/channel/components/MessageAttachments.tsx index 1f9042b86..cd611e204 100644 --- a/fluxer_app/src/features/channel/components/MessageAttachments.tsx +++ b/fluxer_app/src/features/channel/components/MessageAttachments.tsx @@ -445,6 +445,7 @@ export const ForwardedMessageContent = observer(({message, snapshot, onDelete}: message={message} embedIndex={index} contextualEmbeds={snapshot.embeds} + contextualContent={snapshot.content} onDelete={onDelete} isPreview={true} data-flx="channel.message-attachments.forwarded-message-content.embed" diff --git a/fluxer_app/src/features/channel/components/embeds/ChannelEmbed.tsx b/fluxer_app/src/features/channel/components/embeds/ChannelEmbed.tsx index e643e58b4..c8bf5d357 100644 --- a/fluxer_app/src/features/channel/components/embeds/ChannelEmbed.tsx +++ b/fluxer_app/src/features/channel/components/embeds/ChannelEmbed.tsx @@ -70,7 +70,7 @@ function withFreshEmbedUrls(embed: MessageEmbed): MessageEmbed { } export const Embed: FC = observer((props: EmbedProps) => { - const {message, embedIndex, contextualEmbeds, onDelete, isPreview} = props; + const {message, embedIndex, contextualEmbeds, contextualContent, onDelete, isPreview} = props; const embed = withFreshEmbedUrls(props.embed); const {i18n} = useLingui(); const {enabled: isMobile} = MobileLayout; @@ -120,7 +120,8 @@ export const Embed: FC = observer((props: EmbedProps) => { 'data-message-copy-text': copyText, } as const) : {}; - const spoileredUrls = useMemo(() => extractSpoileredUrls(message.content), [message.content]); + const spoilerSourceContent = contextualContent ?? message.content; + const spoileredUrls = useMemo(() => extractSpoileredUrls(spoilerSourceContent), [spoilerSourceContent]); const {isSpoilerEmbed, matchingSpoilerUrls} = useMemo(() => { const urlsToCheck = [ embed.url, diff --git a/fluxer_app/src/features/channel/components/embeds/channel_embed/ChannelEmbedShared.ts b/fluxer_app/src/features/channel/components/embeds/channel_embed/ChannelEmbedShared.ts index cfd477f8d..9fb969117 100644 --- a/fluxer_app/src/features/channel/components/embeds/channel_embed/ChannelEmbedShared.ts +++ b/fluxer_app/src/features/channel/components/embeds/channel_embed/ChannelEmbedShared.ts @@ -32,6 +32,7 @@ export interface EmbedProps { embedIndex?: number; onDelete?: (bypassConfirm?: boolean) => void; contextualEmbeds?: ReadonlyArray; + contextualContent?: string; isPreview?: boolean; }