diff --git a/src/components/MessageComposer/LinkPreviewList.tsx b/src/components/MessageComposer/LinkPreviewList.tsx index bfe57e862..d8a463846 100644 --- a/src/components/MessageComposer/LinkPreviewList.tsx +++ b/src/components/MessageComposer/LinkPreviewList.tsx @@ -51,7 +51,7 @@ export const LinkPreviewCard = ({ linkPreview }: LinkPreviewProps) => { const { handleEnter, handleLeave, tooltipVisible } = useEnterLeaveHandlers(); const [referenceElement, setReferenceElement] = useState(null); - const { image_url, thumb_url, title, title_link } = linkPreview; + const { image_url, thumb_url, title } = linkPreview; if ( !LinkPreviewsManager.previewIsLoaded(linkPreview) && @@ -59,7 +59,7 @@ export const LinkPreviewCard = ({ linkPreview }: LinkPreviewProps) => { ) return null; - const previewImageSrc = title_link || image_url || thumb_url; + const previewImageSrc = image_url || thumb_url; return (
{ }); expect(screen.queryByTestId(LINK_PREVIEW_TEST_ID)).not.toBeInTheDocument(); }); + it('uses image_url as the thumbnail source, never title_link', async () => { + const { channel, client } = await setup(); + await renderLinkPreviewCard({ + channel, + client, + linkPreview: generateScrapedImageAttachment( + fromPartial>({ + image_url: 'https://example.com/image.png', + status: LinkPreviewStatus.LOADED, + thumb_url: 'https://example.com/thumb.png', + title_link: 'https://example.com/page', + }), + ), + }); + expect(screen.getByTestId('str-chat__base-image')).toHaveAttribute( + 'src', + 'https://example.com/image.png', + ); + }); + it('falls back to thumb_url when the preview has no image_url', async () => { + const { channel, client } = await setup(); + await renderLinkPreviewCard({ + channel, + client, + linkPreview: generateScrapedImageAttachment( + fromPartial>({ + image_url: undefined, + status: LinkPreviewStatus.LOADED, + thumb_url: 'https://example.com/thumb.png', + title_link: 'https://example.com/page', + }), + ), + }); + expect(screen.getByTestId('str-chat__base-image')).toHaveAttribute( + 'src', + 'https://example.com/thumb.png', + ); + }); + it('renders no thumbnail when the preview has only a title_link', async () => { + const { channel, client } = await setup(); + await renderLinkPreviewCard({ + channel, + client, + linkPreview: generateScrapedImageAttachment( + fromPartial>({ + image_url: undefined, + status: LinkPreviewStatus.LOADED, + thumb_url: undefined, + title_link: 'https://example.com/page', + }), + ), + }); + expect(screen.queryByTestId('str-chat__base-image')).not.toBeInTheDocument(); + }); it('allows to dismiss a preview', async () => { const { channel, client } = await setup(); const dismissPreviewMock = vi.spyOn(