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:
parent
d298880c42
commit
e45b408f77
@ -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) {
|
||||
|
||||
@ -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}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user