diff --git a/web/src/pages/Events.tsx b/web/src/pages/Events.tsx index e3f6e4fae..c4a1f1c6d 100644 --- a/web/src/pages/Events.tsx +++ b/web/src/pages/Events.tsx @@ -409,8 +409,11 @@ export default function Events() { // review status - const markAllItemsAsReviewed = useCallback( - async (currentItems: ReviewSegment[]) => { + const markItemsAsReviewed = useCallback( + async ( + currentItems: ReviewSegment[], + itemsToMarkReviewed: ReviewSegment[] | undefined = undefined, + ) => { if (currentItems.length == 0) { return; } @@ -435,13 +438,14 @@ export default function Events() { { revalidate: false, populateCache: true }, ); - const itemsToMarkReviewed = currentItems - ?.filter((seg) => seg.end_time) - ?.map((seg) => seg.id); + const reviewList = + itemsToMarkReviewed?.map((seg) => seg.id) || + currentItems?.filter((seg) => seg.end_time)?.map((seg) => seg.id) || + []; - if (itemsToMarkReviewed.length > 0) { + if (reviewList.length > 0) { await axios.post(`reviews/viewed`, { - ids: itemsToMarkReviewed, + ids: reviewList, reviewed: true, }); reloadData(); @@ -611,7 +615,7 @@ export default function Events() { setShowReviewed={setShowReviewed} setSeverity={setSeverity} markItemAsReviewed={markItemAsReviewed} - markAllItemsAsReviewed={markAllItemsAsReviewed} + markItemsAsReviewed={markItemsAsReviewed} onOpenRecording={setRecording} motionPreviewsCamera={motionPreviewsCamera ?? null} setMotionPreviewsCamera={(camera) => diff --git a/web/src/views/events/EventView.tsx b/web/src/views/events/EventView.tsx index 442fb91d4..919bf708a 100644 --- a/web/src/views/events/EventView.tsx +++ b/web/src/views/events/EventView.tsx @@ -110,7 +110,10 @@ type EventViewProps = { setShowReviewed: (show: boolean) => void; setSeverity: (severity: ReviewSeverity) => void; markItemAsReviewed: (review: ReviewSegment) => void; - markAllItemsAsReviewed: (currentItems: ReviewSegment[]) => void; + markItemsAsReviewed: ( + currentItems: ReviewSegment[], + itemsToMarkReviewed?: ReviewSegment[] | undefined, + ) => void; onOpenRecording: (recordingInfo: RecordingStartingPoint) => void; motionPreviewsCamera: string | null; setMotionPreviewsCamera: (camera: string | null) => void; @@ -132,7 +135,7 @@ export default function EventView({ setShowReviewed, setSeverity, markItemAsReviewed, - markAllItemsAsReviewed, + markItemsAsReviewed, onOpenRecording, motionPreviewsCamera, setMotionPreviewsCamera, @@ -498,7 +501,7 @@ export default function EventView({ loading={severity != severityToggle} emptyCardData={emptyCardData} markItemAsReviewed={markItemAsReviewed} - markAllItemsAsReviewed={markAllItemsAsReviewed} + markItemsAsReviewed={markItemsAsReviewed} onSelectReview={onSelectReview} onSelectAllReviews={onSelectAllReviews} setSelectedReviews={setSelectedReviews} @@ -549,7 +552,10 @@ type DetectionReviewProps = { loading: boolean; emptyCardData: EmptyCardData; markItemAsReviewed: (review: ReviewSegment) => void; - markAllItemsAsReviewed: (currentItems: ReviewSegment[]) => void; + markItemsAsReviewed: ( + currentItems: ReviewSegment[], + itemsToMarkReviewed?: ReviewSegment[] | undefined, + ) => void; onSelectReview: ( review: ReviewSegment, ctrl: boolean, @@ -573,7 +579,7 @@ function DetectionReview({ loading, emptyCardData, markItemAsReviewed, - markAllItemsAsReviewed, + markItemsAsReviewed, onSelectReview, onSelectAllReviews, setSelectedReviews, @@ -788,12 +794,7 @@ function DetectionReview({ break; case "r": if (selectedReviews.length > 0 && !modifiers.repeat) { - currentItems?.forEach((item) => { - if (selectedReviews.some((r) => r.id === item.id)) { - item.has_been_reviewed = true; - markItemAsReviewed(item); - } - }); + markItemsAsReviewed(currentItems || [], selectedReviews); setSelectedReviews([]); return true; } @@ -903,7 +904,7 @@ function DetectionReview({ variant="select" onClick={() => { setSelectedReviews([]); - markAllItemsAsReviewed(currentItems ?? []); + markItemsAsReviewed(currentItems ?? []); }} > {t("markTheseItemsAsReviewed")}