ensure lockout is engaged when starting

This commit is contained in:
Nicolas Mowen 2024-03-03 16:15:31 -07:00
parent 92116dcc6a
commit e6d5cdedfd
2 changed files with 13 additions and 6 deletions

View File

@ -306,7 +306,7 @@ export class DynamicVideoController {
undefined; undefined;
private annotationOffset: number; private annotationOffset: number;
private timeToStart: number | undefined = undefined; private timeToStart: number | undefined = undefined;
private clipChangeLockout: boolean = false; private clipChangeLockout: boolean = true;
// preview // preview
private preview: Preview | undefined = undefined; private preview: Preview | undefined = undefined;

View File

@ -525,6 +525,7 @@ function MotionReview({
}: MotionReviewProps) { }: MotionReviewProps) {
const segmentDuration = 30; const segmentDuration = 30;
const { data: config } = useSWR<FrigateConfig>("config"); const { data: config } = useSWR<FrigateConfig>("config");
const [playerReady, setPlayerReady] = useState(false);
const reviewCameras = useMemo(() => { const reviewCameras = useMemo(() => {
if (!config) { if (!config) {
@ -569,12 +570,17 @@ function MotionReview({
// move to next clip // move to next clip
useEffect(() => { useEffect(() => {
if (!videoPlayersRef.current) { if (
!videoPlayersRef.current &&
Object.values(videoPlayersRef.current).length > 0
) {
return; return;
} }
Object.values(videoPlayersRef.current).forEach((controller) => { const firstController = Object.values(videoPlayersRef.current)[0];
controller.onClipChangedEvent((dir) => {
if (firstController) {
firstController.onClipChangedEvent((dir) => {
if ( if (
dir == "forward" && dir == "forward" &&
selectedRangeIdx < timeRangeSegments.ranges.length - 1 selectedRangeIdx < timeRangeSegments.ranges.length - 1
@ -584,8 +590,8 @@ function MotionReview({
setSelectedRangeIdx(selectedRangeIdx - 1); setSelectedRangeIdx(selectedRangeIdx - 1);
} }
}); });
}); }
}, [selectedRangeIdx, timeRangeSegments]); }, [selectedRangeIdx, timeRangeSegments, videoPlayersRef, playerReady]);
useEffect(() => { useEffect(() => {
Object.values(videoPlayersRef.current).forEach((controller) => { Object.values(videoPlayersRef.current).forEach((controller) => {
@ -618,6 +624,7 @@ function MotionReview({
defaultMode="scrubbing" defaultMode="scrubbing"
onControllerReady={(controller) => { onControllerReady={(controller) => {
videoPlayersRef.current[camera.name] = controller; videoPlayersRef.current[camera.name] = controller;
setPlayerReady(true);
}} }}
/> />
</div> </div>