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 type { ApiWebDocument } from '../../../../api/types';
|
||||||
|
|
||||||
|
import { getWebDocumentHash } from '../../../../global/helpers';
|
||||||
import { getFirstLetters } from '../../../../util/textFormat';
|
import { getFirstLetters } from '../../../../util/textFormat';
|
||||||
import renderText from '../../../common/helpers/renderText';
|
import renderText from '../../../common/helpers/renderText';
|
||||||
import { preventMessageInputBlurWithBubbling } from '../../helpers/preventMessageInputBlur';
|
import { preventMessageInputBlurWithBubbling } from '../../helpers/preventMessageInputBlur';
|
||||||
@ -34,7 +35,7 @@ const BaseResult: FC<OwnProps> = ({
|
|||||||
}) => {
|
}) => {
|
||||||
let content: TeactNode | undefined;
|
let content: TeactNode | undefined;
|
||||||
|
|
||||||
const thumbnailDataUrl = useMedia(thumbnail ? `webDocument:${thumbnail.url}` : undefined);
|
const thumbnailDataUrl = useMedia(thumbnail ? getWebDocumentHash(thumbnail) : undefined);
|
||||||
thumbUrl = thumbUrl || thumbnailDataUrl;
|
thumbUrl = thumbUrl || thumbnailDataUrl;
|
||||||
|
|
||||||
if (thumbUrl) {
|
if (thumbUrl) {
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import type {
|
|||||||
ApiBotInlineMediaResult, ApiBotInlineResult, ApiPhoto, ApiThumbnail, ApiWebDocument,
|
ApiBotInlineMediaResult, ApiBotInlineResult, ApiPhoto, ApiThumbnail, ApiWebDocument,
|
||||||
} from '../../../../api/types';
|
} from '../../../../api/types';
|
||||||
|
|
||||||
|
import { getPhotoMediaHash, getWebDocumentHash } from '../../../../global/helpers';
|
||||||
import buildClassName from '../../../../util/buildClassName';
|
import buildClassName from '../../../../util/buildClassName';
|
||||||
|
|
||||||
import useLastCallback from '../../../../hooks/useLastCallback';
|
import useLastCallback from '../../../../hooks/useLastCallback';
|
||||||
@ -36,13 +37,13 @@ const MediaResult: FC<OwnProps> = ({
|
|||||||
if ('thumbnail' in inlineResult) {
|
if ('thumbnail' in inlineResult) {
|
||||||
thumbnail = inlineResult.thumbnail;
|
thumbnail = inlineResult.thumbnail;
|
||||||
}
|
}
|
||||||
if ('webThumbnail' in inlineResult && isForGallery) {
|
if ('webThumbnail' in inlineResult) {
|
||||||
webThumbnail = inlineResult.webThumbnail;
|
webThumbnail = inlineResult.webThumbnail;
|
||||||
}
|
}
|
||||||
|
|
||||||
const thumbnailDataUrl = useMedia(webThumbnail ? `webDocument:${webThumbnail.url}` : undefined);
|
const thumbnailBlobUrl = useMedia(getWebDocumentHash(webThumbnail));
|
||||||
const mediaBlobUrl = useMedia(photo && `photo${photo.id}?size=m`);
|
const mediaBlobUrl = useMedia(photo && getPhotoMediaHash(photo, 'pictogram'));
|
||||||
const transitionClassNames = useMediaTransition(mediaBlobUrl);
|
const transitionClassNames = useMediaTransition(mediaBlobUrl || thumbnailBlobUrl);
|
||||||
|
|
||||||
const handleClick = useLastCallback(() => {
|
const handleClick = useLastCallback(() => {
|
||||||
onClick(inlineResult);
|
onClick(inlineResult);
|
||||||
@ -51,7 +52,7 @@ const MediaResult: FC<OwnProps> = ({
|
|||||||
if (isForGallery) {
|
if (isForGallery) {
|
||||||
return (
|
return (
|
||||||
<div className="MediaResult chat-item-clickable" onClick={handleClick}>
|
<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
|
<img
|
||||||
src={mediaBlobUrl}
|
src={mediaBlobUrl}
|
||||||
className={buildClassName('full-media', transitionClassNames)}
|
className={buildClassName('full-media', transitionClassNames)}
|
||||||
@ -67,7 +68,8 @@ const MediaResult: FC<OwnProps> = ({
|
|||||||
return (
|
return (
|
||||||
<BaseResult
|
<BaseResult
|
||||||
focus={focus}
|
focus={focus}
|
||||||
thumbUrl={mediaBlobUrl || (thumbnail?.dataUri || thumbnailDataUrl)}
|
thumbnail={webThumbnail}
|
||||||
|
thumbUrl={mediaBlobUrl || thumbnail?.dataUri}
|
||||||
transitionClassNames={transitionClassNames}
|
transitionClassNames={transitionClassNames}
|
||||||
title={title}
|
title={title}
|
||||||
description={description}
|
description={description}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user