From 6b5ee9aba0e698404af20e0f6274fab9b3fb6a7a Mon Sep 17 00:00:00 2001
From: Adrian Castro <22133246+castdrian@users.noreply.github.com>
Date: Wed, 6 Mar 2024 12:45:54 +0100
Subject: [PATCH] feat: finish playback speed stuff
---
.../src/components/player/PlaybackSpeedSelector.tsx | 2 +-
apps/expo/src/components/player/VideoPlayer.tsx | 9 +++------
apps/expo/src/hooks/player/usePlaybackSpeed.ts | 13 ++++++++-----
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/apps/expo/src/components/player/PlaybackSpeedSelector.tsx b/apps/expo/src/components/player/PlaybackSpeedSelector.tsx
index 9cc8ca1..e78ae91 100644
--- a/apps/expo/src/components/player/PlaybackSpeedSelector.tsx
+++ b/apps/expo/src/components/player/PlaybackSpeedSelector.tsx
@@ -55,7 +55,7 @@ export const PlaybackSpeedSelector = () => {
}}
>
{speed}
- {speed === currentSpeed.value && (
+ {speed === currentSpeed && (
{
const onReadyForDisplay = () => {
setIsLoading(false);
setHasStartedPlaying(true);
- };
-
- useEffect(() => {
if (videoRef) {
- void videoRef.setRateAsync(currentSpeed.value, true);
+ void videoRef.setRateAsync(currentSpeed, true);
}
- }, [currentSpeed.value, videoRef]);
+ };
useEffect(() => {
const synchronizePlayback = async () => {
@@ -265,7 +262,7 @@ export const VideoPlayer = () => {
shouldPlay={shouldPlay}
resizeMode={resizeMode}
volume={currentVolume.value}
- rate={currentSpeed.value}
+ rate={currentSpeed}
onLoadStart={onVideoLoadStart}
onReadyForDisplay={onReadyForDisplay}
onPlaybackStatusUpdate={setStatus}
diff --git a/apps/expo/src/hooks/player/usePlaybackSpeed.ts b/apps/expo/src/hooks/player/usePlaybackSpeed.ts
index 9fdf9d3..c08a2dc 100644
--- a/apps/expo/src/hooks/player/usePlaybackSpeed.ts
+++ b/apps/expo/src/hooks/player/usePlaybackSpeed.ts
@@ -1,18 +1,21 @@
import { useCallback } from "react";
-import { useSharedValue } from "react-native-reanimated";
+
+import { usePlayerStore } from "~/stores/player/store";
export const usePlaybackSpeed = () => {
- const speed = useSharedValue(1);
+ const videoRef = usePlayerStore((state) => state.videoRef);
const changePlaybackSpeed = useCallback(
(newValue: number) => {
- speed.value = newValue;
+ if (videoRef) {
+ void videoRef.setRateAsync(newValue, true);
+ }
},
- [speed],
+ [videoRef],
);
return {
- currentSpeed: speed,
+ currentSpeed: videoRef?.props.rate ?? 1,
changePlaybackSpeed,
} as const;
};