From 0c8491f7d3a55e8ce611ada609ce3fa9e93e1536 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Sat, 18 Oct 2025 06:54:04 -0500 Subject: [PATCH] pass detail stream as prop to avoid context error --- web/src/components/player/HlsVideoPlayer.tsx | 18 ++++++++++-------- .../player/dynamic/DynamicVideoPlayer.tsx | 5 +++++ web/src/context/detail-stream-context.tsx | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/web/src/components/player/HlsVideoPlayer.tsx b/web/src/components/player/HlsVideoPlayer.tsx index 89900c266..a41d31db2 100644 --- a/web/src/components/player/HlsVideoPlayer.tsx +++ b/web/src/components/player/HlsVideoPlayer.tsx @@ -20,7 +20,7 @@ import { cn } from "@/lib/utils"; import { ASPECT_VERTICAL_LAYOUT, RecordingPlayerError } from "@/types/record"; import { useTranslation } from "react-i18next"; import ObjectTrackOverlay from "@/components/overlay/ObjectTrackOverlay"; -import { useDetailStream } from "@/context/detail-stream-context"; +import { DetailStreamContextType } from "@/context/detail-stream-context"; // Android native hls does not seek correctly const USE_NATIVE_HLS = !isAndroid; @@ -54,6 +54,7 @@ type HlsVideoPlayerProps = { onUploadFrame?: (playTime: number) => Promise | undefined; toggleFullscreen?: () => void; onError?: (error: RecordingPlayerError) => void; + detail?: Partial; }; export default function HlsVideoPlayer({ videoRef, @@ -74,16 +75,17 @@ export default function HlsVideoPlayer({ onUploadFrame, toggleFullscreen, onError, + detail, }: HlsVideoPlayerProps) { const { t } = useTranslation("components/player"); const { data: config } = useSWR("config"); - const { - selectedObjectId, - selectedObjectTimeline, - currentTime, - camera, - isDetailMode, - } = useDetailStream(); + + // for detail stream context in History + const selectedObjectId = detail?.selectedObjectId; + const selectedObjectTimeline = detail?.selectedObjectTimeline; + const currentTime = detail?.currentTime; + const camera = detail?.camera; + const isDetailMode = detail?.isDetailMode ?? false; // playback diff --git a/web/src/components/player/dynamic/DynamicVideoPlayer.tsx b/web/src/components/player/dynamic/DynamicVideoPlayer.tsx index 80f8e6dbf..1b7689804 100644 --- a/web/src/components/player/dynamic/DynamicVideoPlayer.tsx +++ b/web/src/components/player/dynamic/DynamicVideoPlayer.tsx @@ -7,6 +7,7 @@ import { Preview } from "@/types/preview"; import PreviewPlayer, { PreviewController } from "../PreviewPlayer"; import { DynamicVideoController } from "./DynamicVideoController"; import HlsVideoPlayer, { HlsSource } from "../HlsVideoPlayer"; +import { useDetailStream } from "@/context/detail-stream-context"; import { TimeRange } from "@/types/timeline"; import ActivityIndicator from "@/components/indicators/activity-indicator"; import { VideoResolutionType } from "@/types/live"; @@ -59,6 +60,9 @@ export default function DynamicVideoPlayer({ const apiHost = useApiHost(); const { data: config } = useSWR("config"); + // for detail stream context in History + const detail = useDetailStream(); + // controlling playback const playerRef = useRef(null); @@ -291,6 +295,7 @@ export default function DynamicVideoPlayer({ setIsBuffering(true); } }} + detail={detail} />