diff --git a/packages/components/viewer/sub-components/viewer-player.js b/packages/components/viewer/sub-components/viewer-player.js index 40dde73de9..3b2977799c 100644 --- a/packages/components/viewer/sub-components/viewer-player.js +++ b/packages/components/viewer/sub-components/viewer-player.js @@ -422,6 +422,17 @@ export default function ViewerPlayer(props) { const [currentVolume, setCurrentVolume] = React.useState(stateVolume); const [globalTimer, setGlobalTimer] = React.useState(null); const speedIcons = [, , , ]; + + const unmountedRef = React.useRef(false); + + React.useEffect(() => { + unmountedRef.current = false; + + return () => { + unmountedRef.current = true; + }; + }, []); + const handlers = useSwipeable({ onSwiping: (e) => { const [width, height, left, top] = getVideoPosition(videoRef.current); @@ -833,14 +844,22 @@ export default function ViewerPlayer(props) { React.useEffect(() => { if (videoRef && videoRef.current) { - videoRef.current.addEventListener("error", (event) => { + const onError = (event) => { + if (unmountedRef.current) return; + setIsError(true); return dispatch( createAction(ACTION_TYPES.update, { loadingError: true, }) ); - }); + }; + + videoRef.current.addEventListener("error", onError); + + return () => { + videoRef.current?.removeEventListener("error", onError); + }; } }, [videoRef.current]);