From 17dd4d47b0ae3f6a158bfd3ee3187736384fdc79 Mon Sep 17 00:00:00 2001 From: zubiden <19638254+zubiden@users.noreply.github.com> Date: Fri, 29 Aug 2025 08:57:47 +0200 Subject: [PATCH] Document: Do not open big media in MV (#6144) --- src/api/gramjs/apiBuilders/messageContent.ts | 1 + src/api/types/messages.ts | 2 +- src/components/common/Document.tsx | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/api/gramjs/apiBuilders/messageContent.ts b/src/api/gramjs/apiBuilders/messageContent.ts index 11b0e83e3..82f3d1d26 100644 --- a/src/api/gramjs/apiBuilders/messageContent.ts +++ b/src/api/gramjs/apiBuilders/messageContent.ts @@ -454,6 +454,7 @@ export function buildApiDocument(document: GramJs.TypeDocument): ApiDocument | u mediaSize = { width, height, + fromDocumentAttribute: true, }; } } else if (SUPPORTED_VIDEO_CONTENT_TYPES.has(mimeType)) { diff --git a/src/api/types/messages.ts b/src/api/types/messages.ts index 8e1ce1cfe..c8da1d487 100644 --- a/src/api/types/messages.ts +++ b/src/api/types/messages.ts @@ -153,7 +153,7 @@ export interface ApiDocument { previewPhotoSizes?: ApiPhotoSize[]; previewBlobUrl?: string; innerMediaType?: 'photo' | 'video'; - mediaSize?: ApiDimensions; + mediaSize?: ApiDimensions & { fromDocumentAttribute?: boolean }; } export interface ApiContact { diff --git a/src/components/common/Document.tsx b/src/components/common/Document.tsx index 871323aad..7c91102cf 100644 --- a/src/components/common/Document.tsx +++ b/src/components/common/Document.tsx @@ -119,7 +119,9 @@ const Document = ({ const localBlobUrl = hasPreview ? document.previewBlobUrl : undefined; const previewData = useMedia(getDocumentMediaHash(document, 'pictogram'), !isIntersecting); - const withMediaViewer = onMediaClick && document.innerMediaType; + const shouldForceDownload = document.innerMediaType === 'photo' && !document.mediaSize?.fromDocumentAttribute; + + const withMediaViewer = onMediaClick && document.innerMediaType && !shouldForceDownload; const handleDownload = useLastCallback(() => { downloadMedia({ media: document, originMessage: message });