From 3d9cab35786cbe6d6cf410f50c70f5a30afd216e Mon Sep 17 00:00:00 2001 From: wil Date: Mon, 18 Mar 2024 21:29:32 -0400 Subject: [PATCH] repeat button done --- .../components/ControlBar/ButtonRepeat.tsx | 53 +++++++++++++++++++ .../components/ControlBar/ControlBar.tsx | 2 + .../components/ControlBar/SelectTrims.tsx | 2 +- .../components/ScrubberBar/ProgressBar.tsx | 2 +- .../components/ScrubberBar/TimeCursor.tsx | 13 ++--- 5 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 packages/fakeyou.com/src/components/common/VideoPlayerQuickTrim/components/ControlBar/ButtonRepeat.tsx diff --git a/packages/fakeyou.com/src/components/common/VideoPlayerQuickTrim/components/ControlBar/ButtonRepeat.tsx b/packages/fakeyou.com/src/components/common/VideoPlayerQuickTrim/components/ControlBar/ButtonRepeat.tsx new file mode 100644 index 0000000000..dc8dcd05cd --- /dev/null +++ b/packages/fakeyou.com/src/components/common/VideoPlayerQuickTrim/components/ControlBar/ButtonRepeat.tsx @@ -0,0 +1,53 @@ +import React, { + useContext, + useEffect, + useState +} from "react"; + +import { + faArrowsRepeat +} from "@fortawesome/pro-solid-svg-icons"; + +import { Button } from "components/common"; +import { ONE_MS } from "../../utilities"; +import { + VideoElementContext, + TrimContext +} from '../../contexts'; + + +export function ButtonRepeat (){ + const vidEl = useContext(VideoElementContext); + const trimVals = useContext(TrimContext); + const [isRepeatOn, setIsRepeat] = useState(true); + + const toggleRepeat = ()=>{ + setIsRepeat((curr)=>(!curr)); + } + + useEffect(()=>{ + function handleRepeat(){ + if(isRepeatOn && vidEl !==null && trimVals!==null){ + const currentMs = Math.round(vidEl.currentTime * 1000) + if(currentMs > trimVals.trimEndMs + || currentMs < trimVals.trimStartMs + ){ + vidEl.currentTime = trimVals.trimStartMs/1000 + ONE_MS + } + } + } + vidEl?.addEventListener("timeupdate", handleRepeat); + return ()=>{ + vidEl?.removeEventListener("timeupdate", handleRepeat); + }; + },[isRepeatOn, vidEl, trimVals]); + + return( +