From ada15e168676f2392173150de619b5cbc3f30c01 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Tue, 7 Oct 2025 06:57:51 -0500 Subject: [PATCH] use context provider for activity stream --- web/src/contexts/ActivityStreamContext.tsx | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 web/src/contexts/ActivityStreamContext.tsx diff --git a/web/src/contexts/ActivityStreamContext.tsx b/web/src/contexts/ActivityStreamContext.tsx new file mode 100644 index 000000000..afc7b1ac6 --- /dev/null +++ b/web/src/contexts/ActivityStreamContext.tsx @@ -0,0 +1,56 @@ +import React, { createContext, useContext, useState } from "react"; + +interface ActivityStreamContextType { + selectedObjectId: string | undefined; + currentTime: number; + camera: string; + setSelectedObjectId: (id: string | undefined) => void; + isActivityMode: boolean; +} + +const ActivityStreamContext = createContext< + ActivityStreamContextType | undefined +>(undefined); + +interface ActivityStreamProviderProps { + children: React.ReactNode; + isActivityMode: boolean; + currentTime: number; + camera: string; +} + +export function ActivityStreamProvider({ + children, + isActivityMode, + currentTime, + camera, +}: ActivityStreamProviderProps) { + const [selectedObjectId, setSelectedObjectId] = useState< + string | undefined + >(); + + const value: ActivityStreamContextType = { + selectedObjectId, + currentTime, + camera, + setSelectedObjectId, + isActivityMode, + }; + + return ( + + {children} + + ); +} + +// eslint-disable-next-line react-refresh/only-export-components +export function useActivityStream() { + const context = useContext(ActivityStreamContext); + if (context === undefined) { + throw new Error( + "useActivityStream must be used within an ActivityStreamProvider", + ); + } + return context; +}