WebPage: Show document photo preview if available (#6704)
This commit is contained in:
parent
9c66d6cc86
commit
98c7e88f31
@ -13,6 +13,7 @@ import {
|
|||||||
getMediaFormat, getMediaThumbUri, getMediaTransferState, getPhotoMediaHash,
|
getMediaFormat, getMediaThumbUri, getMediaTransferState, getPhotoMediaHash,
|
||||||
} from '../../../global/helpers';
|
} from '../../../global/helpers';
|
||||||
import buildClassName from '../../../util/buildClassName';
|
import buildClassName from '../../../util/buildClassName';
|
||||||
|
import buildStyle from '../../../util/buildStyle';
|
||||||
import getCustomAppendixBg from './helpers/getCustomAppendixBg';
|
import getCustomAppendixBg from './helpers/getCustomAppendixBg';
|
||||||
import { calculateMediaDimensions, MIN_MEDIA_HEIGHT } from './helpers/mediaDimensions';
|
import { calculateMediaDimensions, MIN_MEDIA_HEIGHT } from './helpers/mediaDimensions';
|
||||||
|
|
||||||
@ -256,8 +257,15 @@ const Photo = <T,>({
|
|||||||
className,
|
className,
|
||||||
);
|
);
|
||||||
|
|
||||||
const dimensionsStyle = dimensions ? ` width: ${width}px; left: ${dimensions.x}px; top: ${dimensions.y}px;` : '';
|
const dimensionsStyle = dimensions && buildStyle(
|
||||||
const style = size === 'inline' ? `height: ${height}px;${dimensionsStyle}` : undefined;
|
`left: ${dimensions.x}px`,
|
||||||
|
`top: ${dimensions.y}px`,
|
||||||
|
);
|
||||||
|
const style = size === 'inline' ? buildStyle(
|
||||||
|
`height: ${height}px`,
|
||||||
|
`width: ${width}px`,
|
||||||
|
dimensionsStyle,
|
||||||
|
) : undefined;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
|||||||
@ -1,14 +1,11 @@
|
|||||||
import type { FC } from '../../../lib/teact/teact';
|
|
||||||
import type React from '../../../lib/teact/teact';
|
|
||||||
import { memo, useMemo, useRef } from '../../../lib/teact/teact';
|
import { memo, useMemo, useRef } from '../../../lib/teact/teact';
|
||||||
import { getActions, withGlobal } from '../../../global';
|
import { getActions } from '../../../global';
|
||||||
|
|
||||||
import type { ApiMessage, ApiMessageWebPage, ApiTypeStory, ApiWebPage, ApiWebPageFull } from '../../../api/types';
|
import type { ApiMessage, ApiMessageWebPage, ApiTypeStory, ApiWebPage, ApiWebPageFull } from '../../../api/types';
|
||||||
import type { ObserveFn } from '../../../hooks/useIntersectionObserver';
|
import type { ObserveFn } from '../../../hooks/useIntersectionObserver';
|
||||||
import { AudioOrigin, type ThemeKey, type WebPageMediaSize } from '../../../types';
|
import { AudioOrigin, type ThemeKey, type WebPageMediaSize } from '../../../types';
|
||||||
|
|
||||||
import { getPhotoFullDimensions } from '../../../global/helpers';
|
import { getPhotoFullDimensions } from '../../../global/helpers';
|
||||||
import { selectCanPlayAnimatedEmojis } from '../../../global/selectors';
|
|
||||||
import buildClassName from '../../../util/buildClassName';
|
import buildClassName from '../../../util/buildClassName';
|
||||||
import { tryParseDeepLink } from '../../../util/deepLinkParser';
|
import { tryParseDeepLink } from '../../../util/deepLinkParser';
|
||||||
import trimText from '../../../util/trimText';
|
import trimText from '../../../util/trimText';
|
||||||
@ -68,11 +65,8 @@ type OwnProps = {
|
|||||||
onCancelMediaTransfer?: NoneToVoidFunction;
|
onCancelMediaTransfer?: NoneToVoidFunction;
|
||||||
onContainerClick?: ((e: React.MouseEvent) => void);
|
onContainerClick?: ((e: React.MouseEvent) => void);
|
||||||
};
|
};
|
||||||
type StateProps = {
|
|
||||||
canPlayAnimatedEmojis: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
const WebPage: FC<OwnProps & StateProps> = ({
|
const WebPage = ({
|
||||||
messageWebPage,
|
messageWebPage,
|
||||||
webPage,
|
webPage,
|
||||||
message,
|
message,
|
||||||
@ -96,7 +90,7 @@ const WebPage: FC<OwnProps & StateProps> = ({
|
|||||||
onContainerClick,
|
onContainerClick,
|
||||||
onAudioPlay,
|
onAudioPlay,
|
||||||
onCancelMediaTransfer,
|
onCancelMediaTransfer,
|
||||||
}) => {
|
}: OwnProps) => {
|
||||||
const { openUrl, openTelegramLink } = getActions();
|
const { openUrl, openTelegramLink } = getActions();
|
||||||
const stickersRef = useRef<HTMLDivElement>();
|
const stickersRef = useRef<HTMLDivElement>();
|
||||||
|
|
||||||
@ -249,7 +243,7 @@ const WebPage: FC<OwnProps & StateProps> = ({
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{photo && !isGift && !isAuction && !video && !document && (
|
{photo && !isGift && !isAuction && !video && (
|
||||||
<Photo
|
<Photo
|
||||||
photo={photo}
|
photo={photo}
|
||||||
isOwn={message?.isOutgoing}
|
isOwn={message?.isOutgoing}
|
||||||
@ -295,7 +289,7 @@ const WebPage: FC<OwnProps & StateProps> = ({
|
|||||||
onCancelUpload={onCancelMediaTransfer}
|
onCancelUpload={onCancelMediaTransfer}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{document && (
|
{document && !photo && (
|
||||||
<Document
|
<Document
|
||||||
document={document}
|
document={document}
|
||||||
message={message}
|
message={message}
|
||||||
@ -346,10 +340,4 @@ function getIsSmallPhoto(webPage: ApiWebPageFull, mediaSize?: WebPageMediaSize)
|
|||||||
return width === height && !webPage.hasLargeMedia;
|
return width === height && !webPage.hasLargeMedia;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default memo(withGlobal<OwnProps>(
|
export default memo(WebPage);
|
||||||
(global): Complete<StateProps> => {
|
|
||||||
return {
|
|
||||||
canPlayAnimatedEmojis: selectCanPlayAnimatedEmojis(global),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
)(WebPage));
|
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import {
|
|||||||
getMessageVideo,
|
getMessageVideo,
|
||||||
getMessageVoice,
|
getMessageVoice,
|
||||||
getWebPageAudio,
|
getWebPageAudio,
|
||||||
|
getWebPageDocument,
|
||||||
getWebPagePhoto,
|
getWebPagePhoto,
|
||||||
getWebPageVideo,
|
getWebPageVideo,
|
||||||
} from '../helpers';
|
} from '../helpers';
|
||||||
@ -54,12 +55,13 @@ export function selectMessageDownloadableMedia<T extends GlobalState>(global: T,
|
|||||||
const webPage = selectWebPageFromMessage(global, message);
|
const webPage = selectWebPageFromMessage(global, message);
|
||||||
return (
|
return (
|
||||||
customEmoji || animatedEmoji
|
customEmoji || animatedEmoji
|
||||||
|
|| getMessageDocument(message)
|
||||||
|| getMessagePhoto(message)
|
|| getMessagePhoto(message)
|
||||||
|| getMessageVideo(message)
|
|| getMessageVideo(message)
|
||||||
|| getMessageDocument(message)
|
|
||||||
|| getMessageSticker(message)
|
|| getMessageSticker(message)
|
||||||
|| getMessageAudio(message)
|
|| getMessageAudio(message)
|
||||||
|| getMessageVoice(message)
|
|| getMessageVoice(message)
|
||||||
|
|| getWebPageDocument(webPage)
|
||||||
|| getWebPagePhoto(webPage)
|
|| getWebPagePhoto(webPage)
|
||||||
|| getWebPageVideo(webPage)
|
|| getWebPageVideo(webPage)
|
||||||
|| getWebPageAudio(webPage)
|
|| getWebPageAudio(webPage)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user