diff --git a/src/app/components/RenderMessageContent.tsx b/src/app/components/RenderMessageContent.tsx index 1ce37e5ca3..3e6dcc0aee 100644 --- a/src/app/components/RenderMessageContent.tsx +++ b/src/app/components/RenderMessageContent.tsx @@ -29,6 +29,7 @@ import { ImageViewer } from './image-viewer'; import { PdfViewer } from './Pdf-viewer'; import { TextViewer } from './text-viewer'; import { testMatrixTo } from '../plugins/matrix-to'; +import {IImageContent} from "../../types/matrix/common"; type RenderMessageContentProps = { displayName: string; @@ -157,19 +158,48 @@ export function RenderMessageContent({ } if (msgType === MsgType.Image) { + const content: IImageContent = getContent(); + const renderCaption = content.filename && content.filename !== content.body; return ( - ( - } - renderViewer={(p) => } - /> - )} - outlined={outlineAttachment} - /> + <> + ( + + )} + renderImageContent={(props) => ( + } + renderViewer={(p) => } + /> + )} + outlined={outlineAttachment} + /> + { + renderCaption && ( + ( + + )} + renderUrlsPreview={urlPreview ? renderUrlsPreview : undefined} + /> + ) + } + ); } diff --git a/src/app/components/message/MsgTypeRenderers.tsx b/src/app/components/message/MsgTypeRenderers.tsx index f7cbc4811a..748b7fc6ac 100644 --- a/src/app/components/message/MsgTypeRenderers.tsx +++ b/src/app/components/message/MsgTypeRenderers.tsx @@ -172,6 +172,7 @@ export function MNotice({ edited, content, renderBody, renderUrlsPreview }: MNot type RenderImageContentProps = { body: string; + filename?: string; info?: IImageInfo & IThumbnailContent; mimeType?: string; url: string; @@ -179,10 +180,11 @@ type RenderImageContentProps = { }; type MImageProps = { content: IImageContent; + renderBody: (props: RenderBodyProps) => ReactNode; renderImageContent: (props: RenderImageContentProps) => ReactNode; outlined?: boolean; }; -export function MImage({ content, renderImageContent, outlined }: MImageProps) { +export function MImage({ content, renderBody, renderImageContent, outlined }: MImageProps) { const imgInfo = content?.info; const mxcUrl = content.file?.url ?? content.url; if (typeof mxcUrl !== 'string') { diff --git a/src/types/matrix/common.ts b/src/types/matrix/common.ts index cc20d453c5..d5f2f08cdf 100644 --- a/src/types/matrix/common.ts +++ b/src/types/matrix/common.ts @@ -43,6 +43,7 @@ export type IThumbnailContent = { export type IImageContent = { msgtype: MsgType.Image; body?: string; + filename?: string; url?: string; info?: IImageInfo & IThumbnailContent; file?: IEncryptedFile;