Message / Sticker: Fix missing preview when sending twice

This commit is contained in:
Alexander Zinchuk 2022-11-13 17:05:49 +04:00
parent 610574c23a
commit 56af8a0f36
2 changed files with 11 additions and 3 deletions

View File

@ -7,6 +7,10 @@
} }
} }
.noTransition {
transition: none !important;
}
.media { .media {
position: absolute; position: absolute;
top: 0; top: 0;

View File

@ -100,11 +100,13 @@ const StickerView: FC<OwnProps> = ({
const shouldSkipFullMedia = Boolean(fullMediaHash === previewMediaHash && preloadedPreviewData); const shouldSkipFullMedia = Boolean(fullMediaHash === previewMediaHash && preloadedPreviewData);
const fullMediaData = useMedia(fullMediaHash, !shouldLoad || shouldSkipFullMedia, undefined, cacheBuster); const fullMediaData = useMedia(fullMediaHash, !shouldLoad || shouldSkipFullMedia, undefined, cacheBuster);
const [isPlayerReady, markPlayerReady] = useFlag(Boolean(isLottie && fullMediaData)); // If Lottie data is loaded we will only render thumb if it's good enough (from preview)
const [isPlayerReady, markPlayerReady] = useFlag(Boolean(isLottie && fullMediaData && !preloadedPreviewData));
const isFullMediaReady = fullMediaData && (isStatic || isPlayerReady); const isFullMediaReady = fullMediaData && (isStatic || isPlayerReady);
const thumbClassNames = useMediaTransition(thumbData && !isFullMediaReady); const thumbClassNames = useMediaTransition(thumbData && !isFullMediaReady);
const fullMediaClassNames = useMediaTransition(isFullMediaReady); const fullMediaClassNames = useMediaTransition(isFullMediaReady);
const noTransition = isLottie && preloadedPreviewData;
// Preload preview for Message Input and local message // Preload preview for Message Input and local message
useMedia(previewMediaHash, !shouldLoad || !shouldPreloadPreview, undefined, cacheBuster); useMedia(previewMediaHash, !shouldLoad || !shouldPreloadPreview, undefined, cacheBuster);
@ -118,7 +120,7 @@ const StickerView: FC<OwnProps> = ({
<> <>
<img <img
src={thumbData} src={thumbData}
className={buildClassName(styles.thumb, thumbClassName, thumbClassNames)} className={buildClassName(styles.thumb, noTransition && styles.noTransition, thumbClassName, thumbClassNames)}
alt="" alt=""
/> />
{isLottie ? ( {isLottie ? (
@ -126,7 +128,9 @@ const StickerView: FC<OwnProps> = ({
key={idKey} key={idKey}
id={idKey} id={idKey}
size={size} size={size}
className={buildClassName(styles.media, fullMediaClassName, fullMediaClassNames)} className={buildClassName(
styles.media, noTransition && styles.noTransition, fullMediaClassName, fullMediaClassNames,
)}
tgsUrl={fullMediaData} tgsUrl={fullMediaData}
play={shouldPlay} play={shouldPlay}
color={customColor} color={customColor}