Thumbnail: Add a web thumbnail to show in the preview list (#4774)

Co-authored-by: zubiden <19638254+zubiden@users.noreply.github.com>
This commit is contained in:
Alexander Zinchuk 2024-08-06 20:06:00 +02:00
parent d298880c42
commit e45b408f77
2 changed files with 10 additions and 7 deletions

View File

@ -3,6 +3,7 @@ import React, { memo } from '../../../../lib/teact/teact';
import type { ApiWebDocument } from '../../../../api/types';
import { getWebDocumentHash } from '../../../../global/helpers';
import { getFirstLetters } from '../../../../util/textFormat';
import renderText from '../../../common/helpers/renderText';
import { preventMessageInputBlurWithBubbling } from '../../helpers/preventMessageInputBlur';
@ -34,7 +35,7 @@ const BaseResult: FC<OwnProps> = ({
}) => {
let content: TeactNode | undefined;
const thumbnailDataUrl = useMedia(thumbnail ? `webDocument:${thumbnail.url}` : undefined);
const thumbnailDataUrl = useMedia(thumbnail ? getWebDocumentHash(thumbnail) : undefined);
thumbUrl = thumbUrl || thumbnailDataUrl;
if (thumbUrl) {

View File

@ -5,6 +5,7 @@ import type {
ApiBotInlineMediaResult, ApiBotInlineResult, ApiPhoto, ApiThumbnail, ApiWebDocument,
} from '../../../../api/types';
import { getPhotoMediaHash, getWebDocumentHash } from '../../../../global/helpers';
import buildClassName from '../../../../util/buildClassName';
import useLastCallback from '../../../../hooks/useLastCallback';
@ -36,13 +37,13 @@ const MediaResult: FC<OwnProps> = ({
if ('thumbnail' in inlineResult) {
thumbnail = inlineResult.thumbnail;
}
if ('webThumbnail' in inlineResult && isForGallery) {
if ('webThumbnail' in inlineResult) {
webThumbnail = inlineResult.webThumbnail;
}
const thumbnailDataUrl = useMedia(webThumbnail ? `webDocument:${webThumbnail.url}` : undefined);
const mediaBlobUrl = useMedia(photo && `photo${photo.id}?size=m`);
const transitionClassNames = useMediaTransition(mediaBlobUrl);
const thumbnailBlobUrl = useMedia(getWebDocumentHash(webThumbnail));
const mediaBlobUrl = useMedia(photo && getPhotoMediaHash(photo, 'pictogram'));
const transitionClassNames = useMediaTransition(mediaBlobUrl || thumbnailBlobUrl);
const handleClick = useLastCallback(() => {
onClick(inlineResult);
@ -51,7 +52,7 @@ const MediaResult: FC<OwnProps> = ({
if (isForGallery) {
return (
<div className="MediaResult chat-item-clickable" onClick={handleClick}>
<img src={(photo?.thumbnail?.dataUri) || thumbnailDataUrl} alt="" draggable={false} />
<img src={(photo?.thumbnail?.dataUri) || thumbnailBlobUrl} alt="" draggable={false} />
<img
src={mediaBlobUrl}
className={buildClassName('full-media', transitionClassNames)}
@ -67,7 +68,8 @@ const MediaResult: FC<OwnProps> = ({
return (
<BaseResult
focus={focus}
thumbUrl={mediaBlobUrl || (thumbnail?.dataUri || thumbnailDataUrl)}
thumbnail={webThumbnail}
thumbUrl={mediaBlobUrl || thumbnail?.dataUri}
transitionClassNames={transitionClassNames}
title={title}
description={description}