From f09de4ca287ebc0a9cb7b454e4c8f86ea21edda7 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Sat, 27 Nov 2021 17:40:48 +0100 Subject: [PATCH] Audio Player: Prevent rotate-to-refresh when listening voice --- src/components/middle/AudioPlayer.tsx | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/components/middle/AudioPlayer.tsx b/src/components/middle/AudioPlayer.tsx index a16a69707..1066d8d0c 100644 --- a/src/components/middle/AudioPlayer.tsx +++ b/src/components/middle/AudioPlayer.tsx @@ -1,4 +1,6 @@ -import React, { FC, useCallback, useMemo } from '../../lib/teact/teact'; +import React, { + FC, useCallback, useEffect, useMemo, +} from '../../lib/teact/teact'; import { withGlobal } from '../../lib/teact/teactn'; import { AudioOrigin } from '../../types'; @@ -15,13 +17,14 @@ import { } from '../../modules/helpers'; import { selectChat, selectSender } from '../../modules/selectors'; import { pick } from '../../util/iteratees'; -import renderText from '../common/helpers/renderText'; -import useAudioPlayer from '../../hooks/useAudioPlayer'; import buildClassName from '../../util/buildClassName'; -import useLang from '../../hooks/useLang'; -import useMessageMediaMetadata from '../../hooks/useMessageMediaMetadata'; import { makeTrackId } from '../../util/audioPlayer'; import { clearMediaSession } from '../../util/mediaSession'; +import windowSize from '../../util/windowSize'; +import useAudioPlayer from '../../hooks/useAudioPlayer'; +import useLang from '../../hooks/useLang'; +import useMessageMediaMetadata from '../../hooks/useMessageMediaMetadata'; +import renderText from '../common/helpers/renderText'; import RippleEffect from '../ui/RippleEffect'; import Button from '../ui/Button'; @@ -104,6 +107,20 @@ const AudioPlayer: FC = ({ true, ); + // Prevent refresh by accidentally rotating device when listening to a voice message + const isVoicePlaying = isVoice && isPlaying; + useEffect(() => { + if (!isVoicePlaying) { + return undefined; + } + + windowSize.disableRefresh(); + + return () => { + windowSize.enableRefresh(); + }; + }, [isVoicePlaying]); + const handleClick = useCallback(() => { focusMessage({ chatId: message.chatId, messageId: message.id }); }, [focusMessage, message.chatId, message.id]);