From de772bfd59404ae2b52e1755f90a9a5adda61390 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Mon, 10 Oct 2022 14:37:51 +0200 Subject: [PATCH] Media Viewer: Introduce Picture-in-Picture (#2015) --- src/assets/fonts/icomoon.woff | Bin 49364 -> 49248 bytes src/assets/fonts/icomoon.woff2 | Bin 23192 -> 23144 bytes src/components/mediaViewer/MediaViewer.tsx | 29 +- .../mediaViewer/MediaViewerContent.tsx | 7 + .../mediaViewer/MediaViewerSlides.tsx | 13 +- src/components/mediaViewer/VideoPlayer.tsx | 51 ++- .../mediaViewer/VideoPlayerControls.tsx | 26 +- src/components/ui/ShowTransition.tsx | 8 +- src/global/actions/ui/mediaViewer.ts | 18 +- src/global/types.ts | 3 +- src/hooks/useFullscreen.ts | 56 +-- src/hooks/usePictureInPicture.ts | 107 +++++ src/styles/Telegram T.json | 385 +++++++++--------- src/styles/icons.scss | 3 + src/util/environment.ts | 8 +- src/util/safePlay.ts | 4 + 16 files changed, 472 insertions(+), 246 deletions(-) create mode 100644 src/hooks/usePictureInPicture.ts diff --git a/src/assets/fonts/icomoon.woff b/src/assets/fonts/icomoon.woff index aa72514772a82226b47279cb56cc73b1e09f764e..a49cbe1b749f6c1265575b77943cb045ab20a699 100644 GIT binary patch delta 1127 zcmXw3&2Jk;6rVRU`{|EeuXoq6OK^5KwUt!rTwft*j6r_}qV+#G=_IFxtPLzCPm)A6?k)T_ywuNURCZY&>Xe^{xo)JB-!; z+}yhO(YuHp5OVh=;Xh91Zw&gqO+t2srYYR};QX@zf{2~Qcv`q}z~3KiU%iGHYUwY+ z_kTOPeDTr+)OGeM$Hif=(|z#TcJCS%{{AK=PDQ>CPu}Zo_Yu2`y3d4vc~<-T@}($4 z4)hlg6sc&zECf-31|*U6Wyf|Gq1K#tqT(fJ)C)nyucG<#Bm}-VSg}!yM95)^KtwSQ zw{v9$g6Jg0(b2c%p<>GhZkz`s|$(~3~ zCcQ<+%*M4-ImOg8Q^}pu;#t#K^pHA{bzAv-%aJr5{z)0sTCEyjEt_kSBN%tfC@Gu) zwar|G>p7zfj4LI>$mzV2Gi@6FV47LW%EFNvr$_o(l=A2h}?2Z+~?|sKkJu z6CAtMJG1MK8;v*zBELb3rMl%ZBXH$s<2(a#r?Q`xu=e&jU z;xt=2!_1R=Mn?${yzVTKXmJ1IoVmWWbZELhLkKhx+ABIe_Goabeq3NT@jddnlT(L( zYan)yka@)CZ~n9U+O_6neS(mM(>UXa&Nj%yCW45~<9m;2<(@RtoIY_1v8RO42cj3B zY8=u{>i@S`YANN-GPhULEnL=N9xm)h;6``v!egpuKqW3^!N!p z$<=fJ?}5v+J7EW0o;wfkueM@j>&JI&k&TlI86^$!J2_7-lE>sVaB#tgDx4uCRVp)ZmN^ZW;2YwCwY)E9?V#(!79IVxlUJV0K_NssjE?)(vEjE@1!)3h{ zke0quYz(A^g&0bT$_pJ7N!y-}T%l-|LZT0bY5{?qk2)2AqFV|xx%r_%PXxt6s_cE% z%Z5Z&U^a?caX|GPG~7G}^ajc{2IM)xe>v*;dO%vb$#Ese)`@81z*wFTLKTJQ3&{Bx zFeGX))E5wOCBHpRXb&ZnX;?75Yrv!U(f>fLn=lc!{}6M<+qHphzqpSG)9V*YD|}6*3_10igQED z@`T#zt;IFUY`c4{7K?%fTfXhxeks(UyQgX`TZa%@>!7ti1hf{KJMaVU`D!bnQf8$C zcf0pjB_UA?ah8gWiwBuClbMbzr!rI6q^!~ciz|{01**!E5e*pIB{ArPh$1P{n5@Y# zhUa#YNuxiNOoF2u&I-q_WHP?(bhR%y#*By<{OC?10lj()qqm<>2IUIf4Rqz26(g&< zeo;G|q_r_y+{ZzUL?WZ0L_jKbB~1!UQr0KzoEmH2{Yk5@I`w|vN@|bK4&T_^6a4Q0 zA-mFN|2~-5^qxc|{J05u?mpYNe4pL0;KP-GruDCb>+WrGb;S#wrck$L;_yjD> B&%yuz diff --git a/src/assets/fonts/icomoon.woff2 b/src/assets/fonts/icomoon.woff2 index 7b75d5898cab5524d4858d9eeeec6921fabc76f3..6691b576825d694f030ca20b50637ec5d9403dad 100644 GIT binary patch literal 23144 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 TbI$qmFMu$ij0>r>aqa>DK@cBH literal 23192 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%0Dsg)ad26-YmbD{W>4TiM2% z$1&aLOjr2OaNq3KxvRVGXf$j;FEHUm%2(NGzch6qS@! zRMj+V(W*_m4xPGm>(Q%EzX5}W3>z_O%(w}YrpU-CD5TBuSE#BuSDaNs<}>00000K$0X$k|Zf2A|fIpA|j%ys;a80s;X*cW@ct)W@hF@ Prv_YZ4=8Gm*Vp+0N7hz| diff --git a/src/components/mediaViewer/MediaViewer.tsx b/src/components/mediaViewer/MediaViewer.tsx index daa3260b2..50cf46c2a 100644 --- a/src/components/mediaViewer/MediaViewer.tsx +++ b/src/components/mediaViewer/MediaViewer.tsx @@ -37,6 +37,7 @@ import { renderMessageText } from '../common/helpers/renderMessageText'; import useFlag from '../../hooks/useFlag'; import useForceUpdate from '../../hooks/useForceUpdate'; import { dispatchHeavyAnimationEvent } from '../../hooks/useHeavyAnimationCheck'; +import { exitPictureInPictureIfNeeded } from '../../hooks/usePictureInPicture'; import useLang from '../../hooks/useLang'; import usePrevious from '../../hooks/usePrevious'; import { useMediaProps } from './hooks/useMediaProps'; @@ -62,6 +63,7 @@ type StateProps = { message?: ApiMessage; chatMessages?: Record; collectionIds?: number[]; + isHidden?: boolean; animationLevel: AnimationLevel; shouldSkipHistoryAnimations?: boolean; }; @@ -80,6 +82,7 @@ const MediaViewer: FC = ({ chatMessages, collectionIds, animationLevel, + isHidden, shouldSkipHistoryAnimations, }) => { const { @@ -120,6 +123,7 @@ const MediaViewer: FC = ({ }); const canReport = !!avatarPhoto && !isChatWithSelf; + const isVisible = !isHidden && isOpen; /* Navigation */ const singleMediaId = webPagePhoto || webPageVideo ? mediaId : undefined; @@ -140,6 +144,12 @@ const MediaViewer: FC = ({ animationKey.current = selectedMediaIndex; } + useEffect(() => { + if (isVisible) { + exitPictureInPictureIfNeeded(); + } + }, [isVisible]); + useEffect(() => { if (!IS_SINGLE_COLUMN_LAYOUT) return; document.body.classList.toggle('is-media-viewer-open', isOpen); @@ -164,14 +174,17 @@ const MediaViewer: FC = ({ }, [forceUpdate]); const prevMessage = usePrevious(message); + const prevIsHidden = usePrevious(isHidden); const prevOrigin = usePrevious(origin); + const prevMediaId = usePrevious(mediaId); const prevAvatarOwner = usePrevious(avatarOwner); const prevBestImageData = usePrevious(bestImageData); const textParts = message ? renderMessageText(message) : undefined; const hasFooter = Boolean(textParts); + const shouldAnimateOpening = prevIsHidden && prevMediaId !== mediaId; useEffect(() => { - if (isGhostAnimation && isOpen && !prevMessage && !prevAvatarOwner) { + if (isGhostAnimation && isOpen && (!prevMessage || shouldAnimateOpening) && !prevAvatarOwner) { dispatchHeavyAnimationEvent(ANIMATION_DURATION + ANIMATION_END_DELAY); animateOpening(hasFooter, origin!, bestImageData!, dimensions, isVideo, message); } @@ -181,7 +194,7 @@ const MediaViewer: FC = ({ animateClosing(prevOrigin!, prevBestImageData!, prevMessage || undefined); } }, [ - isGhostAnimation, isOpen, origin, prevOrigin, message, prevMessage, prevAvatarOwner, + isGhostAnimation, isOpen, shouldAnimateOpening, origin, prevOrigin, message, prevMessage, prevAvatarOwner, bestImageData, prevBestImageData, dimensions, isVideo, hasFooter, ]); @@ -269,7 +282,12 @@ const MediaViewer: FC = ({ } return ( - +
{IS_SINGLE_COLUMN_LAYOUT && ( + {isPictureInPictureSupported && ( + + )} {isFullscreenSupported && (