From 8610a3c4e57948a77cd53b6bb0d4f354d8473bbd Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Fri, 24 Oct 2025 08:44:44 -0500 Subject: [PATCH] remove review detail dialog and link chip to detail stream in history --- web/src/pages/Events.tsx | 1 + web/src/types/record.ts | 1 + web/src/views/events/EventView.tsx | 18 +++++++++--------- web/src/views/recording/RecordingView.tsx | 9 ++++++++- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/web/src/pages/Events.tsx b/web/src/pages/Events.tsx index f4bc75a5a..bdb78e0d3 100644 --- a/web/src/pages/Events.tsx +++ b/web/src/pages/Events.tsx @@ -66,6 +66,7 @@ export default function Events() { camera: resp.data.camera, startTime, severity: resp.data.severity, + timelineType: "detail", }, true, ); diff --git a/web/src/types/record.ts b/web/src/types/record.ts index a93029376..b662ce547 100644 --- a/web/src/types/record.ts +++ b/web/src/types/record.ts @@ -37,6 +37,7 @@ export type RecordingStartingPoint = { camera: string; startTime: number; severity: ReviewSeverity; + timelineType?: "timeline" | "events" | "detail"; }; export type RecordingPlayerError = "stalled" | "startup"; diff --git a/web/src/views/events/EventView.tsx b/web/src/views/events/EventView.tsx index 83c080555..f2c2606df 100644 --- a/web/src/views/events/EventView.tsx +++ b/web/src/views/events/EventView.tsx @@ -53,8 +53,6 @@ import { cn } from "@/lib/utils"; import { FilterList, LAST_24_HOURS_KEY } from "@/types/filter"; import { GiSoundWaves } from "react-icons/gi"; import useKeyboardListener from "@/hooks/use-keyboard-listener"; -import ReviewDetailDialog from "@/components/overlay/detail/ReviewDetailDialog"; - import { useTimelineZoom } from "@/hooks/use-timeline-zoom"; import { useTranslation } from "react-i18next"; @@ -398,6 +396,7 @@ export default function EventView({ onSelectAllReviews={onSelectAllReviews} setSelectedReviews={setSelectedReviews} pullLatestData={pullLatestData} + onOpenRecording={onOpenRecording} /> )} {severity == "significant_motion" && ( @@ -441,6 +440,7 @@ type DetectionReviewProps = { onSelectAllReviews: () => void; setSelectedReviews: (reviews: ReviewSegment[]) => void; pullLatestData: () => void; + onOpenRecording: (recordingInfo: RecordingStartingPoint) => void; }; function DetectionReview({ contentRef, @@ -460,15 +460,12 @@ function DetectionReview({ onSelectAllReviews, setSelectedReviews, pullLatestData, + onOpenRecording, }: DetectionReviewProps) { const { t } = useTranslation(["views/events"]); const reviewTimelineRef = useRef(null); - // detail - - const [reviewDetail, setReviewDetail] = useState(); - // preview const [previewTime, setPreviewTime] = useState(); @@ -688,8 +685,6 @@ function DetectionReview({ return ( <> - -
{ if (detail) { - setReviewDetail(review); + onOpenRecording({ + camera: review.camera, + startTime: review.start_time - REVIEW_PADDING, + severity: review.severity, + timelineType: "detail", + }); } else { onSelectReview(review, ctrl); } diff --git a/web/src/views/recording/RecordingView.tsx b/web/src/views/recording/RecordingView.tsx index 4e0aa83ae..80671ea1b 100644 --- a/web/src/views/recording/RecordingView.tsx +++ b/web/src/views/recording/RecordingView.tsx @@ -53,6 +53,7 @@ import { ASPECT_VERTICAL_LAYOUT, ASPECT_WIDE_LAYOUT, RecordingSegment, + RecordingStartingPoint, } from "@/types/record"; import { useResizeObserver } from "@/hooks/resize-observer"; import { cn } from "@/lib/utils"; @@ -141,9 +142,15 @@ export function RecordingView({ // timeline + const [recording] = useOverlayState( + "recording", + undefined, + false, + ); + const [timelineType, setTimelineType] = useOverlayState( "timelineType", - "timeline", + recording?.timelineType ?? "timeline", ); const chunkedTimeRange = useMemo(