diff --git a/ui/component/viewers/videoViewer/view.jsx b/ui/component/viewers/videoViewer/view.jsx index 50f229231..0a2b2c1f0 100644 --- a/ui/component/viewers/videoViewer/view.jsx +++ b/ui/component/viewers/videoViewer/view.jsx @@ -15,6 +15,7 @@ import { addPlayNextButton } from './internal/play-next'; import { addPlayPreviousButton } from './internal/play-previous'; import { useHistory } from 'react-router'; import type { HomepageCat } from 'util/buildHomepage'; +import debounce from 'util/debounce'; import { formatLbryUrlForWeb, generateListSearchUrlParams } from 'util/url'; const PLAY_TIMEOUT_ERROR = 'play_timeout_error'; @@ -111,6 +112,14 @@ function VideoViewer(props: Props) { const [replay, setReplay] = useState(false); const [videoNode, setVideoNode] = useState(); + const updateVolumeState = React.useCallback( + debounce((volume, muted) => { + changeVolume(volume); + changeMute(muted); + }, 500), + [] + ); + // force everything to recent when URI changes, can cause weird corner cases otherwise (e.g. navigate while autoplay is true) useEffect(() => { if (uri && previousUri && uri !== previousUri) { @@ -343,8 +352,7 @@ function VideoViewer(props: Props) { }); player.on('volumechange', () => { if (player) { - changeVolume(player.volume()); - changeMute(player.muted()); + updateVolumeState(player.volume(), player.muted()); } }); player.on('ratechange', () => {