From 8d7654d8591c2ea7aad71b42c99d3913e6a59cfd Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 10 Apr 2024 10:58:45 -0600 Subject: [PATCH] Handle undefined end time --- web/src/components/card/ReviewCard.tsx | 4 +++- web/src/components/timeline/MotionReviewTimeline.tsx | 6 ++++-- web/src/hooks/use-camera-activity.ts | 6 ++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/web/src/components/card/ReviewCard.tsx b/web/src/components/card/ReviewCard.tsx index 66710d6ff..941beaa2e 100644 --- a/web/src/components/card/ReviewCard.tsx +++ b/web/src/components/card/ReviewCard.tsx @@ -27,7 +27,9 @@ export default function ReviewCard({ config?.ui.time_format == "24hour" ? "%H:%M" : "%I:%M %p", ); const isSelected = useMemo( - () => event.start_time <= currentTime && event.end_time >= currentTime, + () => + event.start_time <= currentTime && + (event.end_time ?? Date.now() / 1000) >= currentTime, [event, currentTime], ); diff --git a/web/src/components/timeline/MotionReviewTimeline.tsx b/web/src/components/timeline/MotionReviewTimeline.tsx index fef69a75f..2834437cd 100644 --- a/web/src/components/timeline/MotionReviewTimeline.tsx +++ b/web/src/components/timeline/MotionReviewTimeline.tsx @@ -100,8 +100,10 @@ export function MotionReviewTimeline({ const overlappingReviewItems = events.some( (item) => (item.start_time >= motionStart && item.start_time < motionEnd) || - (item.end_time > motionStart && item.end_time <= motionEnd) || - (item.start_time <= motionStart && item.end_time >= motionEnd), + ((item.end_time ?? timelineStart) > motionStart && + (item.end_time ?? timelineStart) <= motionEnd) || + (item.start_time <= motionStart && + (item.end_time ?? timelineStart) >= motionEnd), ); if ((!segmentMotion || overlappingReviewItems) && motionOnly) { diff --git a/web/src/hooks/use-camera-activity.ts b/web/src/hooks/use-camera-activity.ts index eb5b50dfe..99b8702b5 100644 --- a/web/src/hooks/use-camera-activity.ts +++ b/web/src/hooks/use-camera-activity.ts @@ -107,8 +107,10 @@ export function useCameraMotionNextTimestamp( const overlappingReviewItems = reviewItems.some( (item) => (item.start_time >= motionStart && item.start_time < motionEnd) || - (item.end_time > motionStart && item.end_time <= motionEnd) || - (item.start_time <= motionStart && item.end_time >= motionEnd), + ((item.end_time ?? Date.now() / 1000) > motionStart && + (item.end_time ?? Date.now() / 1000) <= motionEnd) || + (item.start_time <= motionStart && + (item.end_time ?? Date.now() / 1000) >= motionEnd), ); if (!segmentMotion || overlappingReviewItems) {