import { useQuery } from "@tanstack/react-query"; import { CAMBASE } from "../../../utils/config"; const targetDectionFeed = async (cameraFeedID: "A" | "B" | "C" | null) => { const response = await fetch(`${CAMBASE}/TargetDetectionColour${cameraFeedID}-preview`, { signal: AbortSignal.timeout(300000), cache: "no-store", }); if (!response.ok) { throw new Error(`Cannot reach endpoint (${response.status})`); } return response.blob(); }; const getVideoFeed = async (cameraFeedID: "A" | "B" | "C" | null) => { const response = await fetch(`${CAMBASE}/Camera${cameraFeedID}-preview`, { signal: AbortSignal.timeout(300000), cache: "no-store", }); if (!response.ok) { throw new Error(`Cannot reach endpoint (${response.status})`); } return response.blob(); }; export const useGetVideoFeed = (cameraFeedID: "A" | "B" | "C" | null, mode: string) => { const targetDetectionQuery = useQuery({ queryKey: ["getfeed", cameraFeedID], queryFn: () => targetDectionFeed(cameraFeedID), refetchInterval: 500, enabled: mode !== "magnify" && mode !== "zoom", }); const videoFeedQuery = useQuery({ queryKey: ["videoQuery", cameraFeedID, mode], queryFn: () => getVideoFeed(cameraFeedID), refetchInterval: 500, enabled: mode === "magnify" || mode === "zoom", }); return { targetDetectionQuery, videoFeedQuery }; };