From eddce446de42a28f61adec15c4dfd647ddd8a569 Mon Sep 17 00:00:00 2001 From: zubiden <19638254+zubiden@users.noreply.github.com> Date: Tue, 6 Aug 2024 20:06:35 +0200 Subject: [PATCH] Various fixes (#4836) --- src/api/gramjs/methods/client.ts | 5 +++-- src/components/common/MessageText.tsx | 4 +++- src/components/common/StickerView.tsx | 2 +- src/components/middle/message/Message.tsx | 1 + 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/api/gramjs/methods/client.ts b/src/api/gramjs/methods/client.ts index fa6841990..7b5cc4672 100644 --- a/src/api/gramjs/methods/client.ts +++ b/src/api/gramjs/methods/client.ts @@ -24,7 +24,7 @@ import { buildApiMessage, setMessageBuilderCurrentUserId } from '../apiBuilders/ import { buildApiPeerId } from '../apiBuilders/peers'; import { buildApiStory } from '../apiBuilders/stories'; import { buildApiUser, buildApiUserFullInfo } from '../apiBuilders/users'; -import { buildInputPeerFromLocalDb } from '../gramjsBuilders'; +import { buildInputPeerFromLocalDb, getEntityTypeById } from '../gramjsBuilders'; import { addEntitiesToLocalDb, addMessageToLocalDb, addStoryToLocalDb, addUserToLocalDb, isResponseUpdate, log, } from '../helpers'; @@ -465,10 +465,11 @@ export async function repairFileReference({ } async function repairMessageMedia(peerId: string, messageId: number) { + const type = getEntityTypeById(peerId); const peer = buildInputPeerFromLocalDb(peerId); if (!peer) return false; const result = await invokeRequest( - peer + type === 'channel' ? new GramJs.channels.GetMessages({ channel: peer, id: [new GramJs.InputMessageID({ id: messageId })], diff --git a/src/components/common/MessageText.tsx b/src/components/common/MessageText.tsx index 752f589be..f4d4df006 100644 --- a/src/components/common/MessageText.tsx +++ b/src/components/common/MessageText.tsx @@ -31,6 +31,7 @@ interface OwnProps { forcePlayback?: boolean; focusedQuote?: string; isInSelectMode?: boolean; + canBeEmpty?: boolean; } const MIN_CUSTOM_EMOJIS_FOR_SHARED_CANVAS = 3; @@ -52,6 +53,7 @@ function MessageText({ forcePlayback, focusedQuote, isInSelectMode, + canBeEmpty, }: OwnProps) { // eslint-disable-next-line no-null/no-null const sharedCanvasRef = useRef(null); @@ -80,7 +82,7 @@ function MessageText({ return customEmojisCount >= MIN_CUSTOM_EMOJIS_FOR_SHARED_CANVAS; }, [entities]) || 0; - if (!text) { + if (!text && !canBeEmpty) { return {CONTENT_NOT_SUPPORTED}; } diff --git a/src/components/common/StickerView.tsx b/src/components/common/StickerView.tsx index 41bdb72bc..3dd660b27 100644 --- a/src/components/common/StickerView.tsx +++ b/src/components/common/StickerView.tsx @@ -107,7 +107,7 @@ const StickerView: FC = ({ const thumbData = customColor ? thumbDataUri : (previewMediaData || thumbDataUri); const shouldForcePreview = isUnsupportedVideo || (isStatic && isSmall); - fullMediaHash ||= shouldForcePreview ? previewMediaHash : `sticker${id}`; + fullMediaHash = shouldForcePreview ? previewMediaHash : (fullMediaHash || `sticker${id}`); // If preloaded preview is forced, it will render as thumb, so no need to load it again const shouldSkipFullMedia = Boolean(fullMediaHash === previewMediaHash && previewMediaData); diff --git a/src/components/middle/message/Message.tsx b/src/components/middle/message/Message.tsx index 6319037b3..8643e2e93 100644 --- a/src/components/middle/message/Message.tsx +++ b/src/components/middle/message/Message.tsx @@ -980,6 +980,7 @@ const Message: FC = ({ observeIntersectionForPlaying={observeIntersectionForPlaying} withTranslucentThumbs={isCustomShape} isInSelectMode={isInSelectMode} + canBeEmpty={hasFactCheck} /> ); }