From e5ce1dca41675789a25778499f2d9aed88a84e72 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Thu, 13 Jun 2024 16:12:48 -0600 Subject: [PATCH] Manually set current time when selecting event --- web/src/views/events/RecordingView.tsx | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/web/src/views/events/RecordingView.tsx b/web/src/views/events/RecordingView.tsx index e9743eeec..f42e83a17 100644 --- a/web/src/views/events/RecordingView.tsx +++ b/web/src/views/events/RecordingView.tsx @@ -196,6 +196,19 @@ export function RecordingView({ updateSelectedSegment, ]); + const manuallySetCurrentTime = useCallback( + (time: number) => { + setCurrentTime(time); + + if (currentTimeRange.after <= time && currentTimeRange.before >= time) { + mainControllerRef.current?.seekToTimestamp(time, true); + } else { + updateSelectedSegment(time, true); + } + }, + [currentTimeRange, updateSelectedSegment], + ); + useEffect(() => { if (!scrubbing) { if (Math.abs(currentTime - playerTime) > 10) { @@ -580,6 +593,7 @@ export function RecordingView({ currentTime={currentTime} exportRange={exportMode == "timeline" ? exportRange : undefined} setCurrentTime={setCurrentTime} + manuallySetCurrentTime={manuallySetCurrentTime} setScrubbing={setScrubbing} setExportRange={setExportRange} /> @@ -597,6 +611,7 @@ type TimelineProps = { currentTime: number; exportRange?: TimeRange; setCurrentTime: React.Dispatch>; + manuallySetCurrentTime: (time: number, force: boolean) => void; setScrubbing: React.Dispatch>; setExportRange: (range: TimeRange) => void; }; @@ -609,6 +624,7 @@ function Timeline({ currentTime, exportRange, setCurrentTime, + manuallySetCurrentTime, setScrubbing, setExportRange, }: TimelineProps) { @@ -693,9 +709,10 @@ function Timeline({ event={review} currentTime={currentTime} onClick={() => { - setScrubbing(true); - setCurrentTime(review.start_time - REVIEW_PADDING); - setScrubbing(false); + manuallySetCurrentTime( + review.start_time - REVIEW_PADDING, + true, + ); }} /> );