From 5a16bafbbffee3b59017ece8b4c8d68658bfde5a Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 10 Mar 2026 20:08:17 +0200 Subject: [PATCH] fix(video_player): playback speed can get out of sync with external control --- apps/client/src/widgets/type_widgets/file/Video.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/client/src/widgets/type_widgets/file/Video.tsx b/apps/client/src/widgets/type_widgets/file/Video.tsx index a250df1f8e..2ab4c76e50 100644 --- a/apps/client/src/widgets/type_widgets/file/Video.tsx +++ b/apps/client/src/widgets/type_widgets/file/Video.tsx @@ -237,7 +237,18 @@ function VolumeControl({ videoRef }: { videoRef: RefObject }) const PLAYBACK_SPEEDS = [0.5, 1, 1.25, 1.5, 2]; function PlaybackSpeed({ videoRef }: { videoRef: RefObject }) { - const [speed, setSpeed] = useState(1); + const [speed, setSpeed] = useState(() => videoRef.current?.playbackRate ?? 1); + + useEffect(() => { + const video = videoRef.current; + if (!video) return; + + setSpeed(video.playbackRate); + + const onRateChange = () => setSpeed(video.playbackRate); + video.addEventListener("ratechange", onRateChange); + return () => video.removeEventListener("ratechange", onRateChange); + }, []); const selectSpeed = (rate: number) => { const video = videoRef.current;