From ef98490be63c5ccea501081dff673dcefbe2a8b0 Mon Sep 17 00:00:00 2001 From: Pranav1703 Date: Thu, 11 Dec 2025 20:59:22 +0530 Subject: [PATCH 1/3] feature: speeds up video when holding MLB --- src/routes/Player/Player.js | 32 ++++++++++++++++++++++++++++++++ src/routes/Player/Video/Video.js | 4 ++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/routes/Player/Player.js b/src/routes/Player/Player.js index 27f705be8..970ffc17f 100644 --- a/src/routes/Player/Player.js +++ b/src/routes/Player/Player.js @@ -47,6 +47,10 @@ const Player = ({ urlParams, queryParams }) => { const toast = useToast(); const [seeking, setSeeking] = React.useState(false); + + const isMlbHeld = React.useRef(false); + const MlbHoldTimerRef = React.useRef(null); + const currPlaybackSpeed = React.useRef(null) const [casting, setCasting] = React.useState(() => { return services.chromecast.active && services.chromecast.transport.getCastState() === cast.framework.CastState.CONNECTED; @@ -312,6 +316,31 @@ const Player = ({ urlParams, queryParams }) => { closeSideDrawer(); }, []); + const onVideoMouseDown = React.useCallback((event)=>{ + if (event.button !== 0) return; + MlbHoldTimerRef.current = setTimeout(() => { + currPlaybackSpeed.current = video.state.playbackSpeed + isMlbHeld.current = true; + video.setProp('playbackSpeed',2.00) + }, 500) + + },[video]) + const onVideoMouseUp = React.useCallback((event)=>{ + clearTimeout(MlbHoldTimerRef.current); + if (isMlbHeld.current){ + video.setProp('playbackSpeed',currPlaybackSpeed.current) + isMlbHeld.current = false + } + + },[video]) + const onVideoMouseLeave = React.useCallback((event)=>{ + clearTimeout(MlbHoldTimerRef.current); + if (isMlbHeld.current) { + video.setProp('playbackSpeed',currPlaybackSpeed.current) + isMlbHeld.current = false + } + },[video]) + const onContainerMouseMove = React.useCallback((event) => { setImmersed(false); if (!event.nativeEvent.immersePrevented) { @@ -796,6 +825,9 @@ const Player = ({ urlParams, queryParams }) => { className={styles['layer']} onClick={onVideoClick} onDoubleClick={onVideoDoubleClick} + onMouseDown={onVideoMouseDown} + onMouseUp={onVideoMouseUp} + onMouseLeave={onVideoMouseLeave} /> { !video.state.loaded ? diff --git a/src/routes/Player/Video/Video.js b/src/routes/Player/Video/Video.js index 78cc5c08e..49d9ec3fd 100644 --- a/src/routes/Player/Video/Video.js +++ b/src/routes/Player/Video/Video.js @@ -5,9 +5,9 @@ const PropTypes = require('prop-types'); const classnames = require('classnames'); const styles = require('./styles'); -const Video = React.forwardRef(({ className, onClick, onDoubleClick }, ref) => { +const Video = React.forwardRef(({ className, onClick, onDoubleClick, onMouseUp, onMouseDown, onMouseLeave }, ref) => { return ( -
+
); From d130a0de0a14be29ddb4beb9b55312051c20e900 Mon Sep 17 00:00:00 2001 From: Pranav1703 Date: Sun, 14 Dec 2025 18:20:18 +0530 Subject: [PATCH 2/3] fix: build issues --- src/routes/Player/Player.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/routes/Player/Player.js b/src/routes/Player/Player.js index 970ffc17f..dcf246428 100644 --- a/src/routes/Player/Player.js +++ b/src/routes/Player/Player.js @@ -50,7 +50,7 @@ const Player = ({ urlParams, queryParams }) => { const isMlbHeld = React.useRef(false); const MlbHoldTimerRef = React.useRef(null); - const currPlaybackSpeed = React.useRef(null) + const currPlaybackSpeed = React.useRef(null); const [casting, setCasting] = React.useState(() => { return services.chromecast.active && services.chromecast.transport.getCastState() === cast.framework.CastState.CONNECTED; @@ -316,30 +316,30 @@ const Player = ({ urlParams, queryParams }) => { closeSideDrawer(); }, []); - const onVideoMouseDown = React.useCallback((event)=>{ + const onVideoMouseDown = React.useCallback((event) => { if (event.button !== 0) return; MlbHoldTimerRef.current = setTimeout(() => { - currPlaybackSpeed.current = video.state.playbackSpeed + currPlaybackSpeed.current = video.state.playbackSpeed; isMlbHeld.current = true; - video.setProp('playbackSpeed',2.00) - }, 500) - - },[video]) - const onVideoMouseUp = React.useCallback((event)=>{ + video.setProp('playbackSpeed',2.00); + }, 500); + }, [video]); + + const onVideoMouseUp = React.useCallback((event) => { clearTimeout(MlbHoldTimerRef.current); if (isMlbHeld.current){ - video.setProp('playbackSpeed',currPlaybackSpeed.current) - isMlbHeld.current = false + video.setProp('playbackSpeed',currPlaybackSpeed.current); + isMlbHeld.current = false; } + }, [video]); - },[video]) - const onVideoMouseLeave = React.useCallback((event)=>{ + const onVideoMouseLeave = React.useCallback((event) => { clearTimeout(MlbHoldTimerRef.current); if (isMlbHeld.current) { - video.setProp('playbackSpeed',currPlaybackSpeed.current) - isMlbHeld.current = false + video.setProp('playbackSpeed',currPlaybackSpeed.current); + isMlbHeld.current = false; } - },[video]) + }, [video]); const onContainerMouseMove = React.useCallback((event) => { setImmersed(false); From a14a1b87987b66e4ec90a5ca712ef5cdb9638638 Mon Sep 17 00:00:00 2001 From: Pranav1703 Date: Thu, 18 Dec 2025 11:28:50 +0530 Subject: [PATCH 3/3] remove trailing tab space --- src/routes/Player/Player.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/Player/Player.js b/src/routes/Player/Player.js index dcf246428..94e2bcfd5 100644 --- a/src/routes/Player/Player.js +++ b/src/routes/Player/Player.js @@ -324,7 +324,7 @@ const Player = ({ urlParams, queryParams }) => { video.setProp('playbackSpeed',2.00); }, 500); }, [video]); - + const onVideoMouseUp = React.useCallback((event) => { clearTimeout(MlbHoldTimerRef.current); if (isMlbHeld.current){