From 742eba47bbdf54599451e25f92a1ca60e9b30436 Mon Sep 17 00:00:00 2001 From: WeshBg <158100913+WeshBg@users.noreply.github.com> Date: Sat, 14 Mar 2026 00:44:18 -0400 Subject: [PATCH] Fixed 2x bug --- src/components/player/AndroidVideoPlayer.tsx | 5 +- .../player/android/hooks/useSpeedControl.ts | 21 ++- .../player/components/GestureControls.tsx | 138 ++++++++---------- .../player/hooks/useSpeedControl.ts | 21 ++- 4 files changed, 86 insertions(+), 99 deletions(-) diff --git a/src/components/player/AndroidVideoPlayer.tsx b/src/components/player/AndroidVideoPlayer.tsx index 1591f2f4..afb9a499 100644 --- a/src/components/player/AndroidVideoPlayer.tsx +++ b/src/components/player/AndroidVideoPlayer.tsx @@ -887,7 +887,10 @@ const AndroidVideoPlayer: React.FC = () => { onLongPressActivated={speedControl.activateSpeedBoost} onLongPressEnd={speedControl.deactivateSpeedBoost} onLongPressStateChange={(e) => { - if (e.nativeEvent.state !== 4 && e.nativeEvent.state !== 2) speedControl.deactivateSpeedBoost(); + const state = e.nativeEvent.state; + if (state === 5 || state === 3 || state === 1) { // END, CANCELLED, FAILED + speedControl.deactivateSpeedBoost(); + } }} toggleControls={toggleControls} showControls={playerState.showControls} diff --git a/src/components/player/android/hooks/useSpeedControl.ts b/src/components/player/android/hooks/useSpeedControl.ts index d185f0e6..a398922c 100644 --- a/src/components/player/android/hooks/useSpeedControl.ts +++ b/src/components/player/android/hooks/useSpeedControl.ts @@ -59,23 +59,22 @@ export const useSpeedControl = (initialSpeed: number = 1.0) => { useNativeDriver: true }).start(); - setTimeout(() => { - Animated.timing(speedActivatedOverlayOpacity, { - toValue: 0, - duration: 300, - useNativeDriver: true - }).start(() => setShowSpeedActivatedOverlay(false)); - }, 2000); - - }, [holdToSpeedEnabled, isSpeedBoosted, playbackSpeed, holdToSpeedValue]); + }, [holdToSpeedEnabled, isSpeedBoosted, playbackSpeed, holdToSpeedValue, speedActivatedOverlayOpacity]); const deactivateSpeedBoost = useCallback(() => { if (isSpeedBoosted) { setPlaybackSpeed(originalSpeed); setIsSpeedBoosted(false); - Animated.timing(speedActivatedOverlayOpacity, { toValue: 0, duration: 100, useNativeDriver: true }).start(); + + Animated.timing(speedActivatedOverlayOpacity, { + toValue: 0, + duration: 100, + useNativeDriver: true + }).start(() => { + setShowSpeedActivatedOverlay(false); + }); } - }, [isSpeedBoosted, originalSpeed]); + }, [isSpeedBoosted, originalSpeed, speedActivatedOverlayOpacity]); return { playbackSpeed, diff --git a/src/components/player/components/GestureControls.tsx b/src/components/player/components/GestureControls.tsx index 599a22af..7fbff0cc 100644 --- a/src/components/player/components/GestureControls.tsx +++ b/src/components/player/components/GestureControls.tsx @@ -191,13 +191,9 @@ export const GestureControls: React.FC = ({ height: '100%' as const, }; - // Full gesture area style + // Full gesture area style covering the entire video const gestureAreaStyle = { - position: 'absolute' as const, - top: screenDimensions.height * 0.15, - left: 0, - width: screenDimensions.width, - height: screenDimensions.height * 0.7, + ...StyleSheet.absoluteFillObject, zIndex: 10, }; @@ -237,41 +233,39 @@ export const GestureControls: React.FC = ({ failOffsetY={[-20, 20]} maxPointers={1} > - - {/* Left side gestures */} - - - - - - - - - - - - - - - + + + {/* Left side gestures */} + + + + + + + + + + + {/* Center area tap handler */} = ({ }} /> - {/* Right side gestures */} - - - - - - - - - - - - - - - - + {/* Right side gestures */} + + + + + + + + + + + + + {/* Volume/Brightness Pill Overlay */} diff --git a/src/components/player/hooks/useSpeedControl.ts b/src/components/player/hooks/useSpeedControl.ts index a8a0c022..2a263205 100644 --- a/src/components/player/hooks/useSpeedControl.ts +++ b/src/components/player/hooks/useSpeedControl.ts @@ -63,23 +63,22 @@ export const useSpeedControl = (initialSpeed: number = 1.0) => { useNativeDriver: true }).start(); - setTimeout(() => { - Animated.timing(speedActivatedOverlayOpacity, { - toValue: 0, - duration: 300, - useNativeDriver: true - }).start(() => setShowSpeedActivatedOverlay(false)); - }, 2000); - - }, [holdToSpeedEnabled, isSpeedBoosted, playbackSpeed, holdToSpeedValue]); + }, [holdToSpeedEnabled, isSpeedBoosted, playbackSpeed, holdToSpeedValue, speedActivatedOverlayOpacity]); const deactivateSpeedBoost = useCallback(() => { if (isSpeedBoosted) { setPlaybackSpeed(originalSpeed); setIsSpeedBoosted(false); - Animated.timing(speedActivatedOverlayOpacity, { toValue: 0, duration: 100, useNativeDriver: true }).start(); + + Animated.timing(speedActivatedOverlayOpacity, { + toValue: 0, + duration: 100, + useNativeDriver: true + }).start(() => { + setShowSpeedActivatedOverlay(false); + }); } - }, [isSpeedBoosted, originalSpeed]); + }, [isSpeedBoosted, originalSpeed, speedActivatedOverlayOpacity]); return { playbackSpeed,