44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { useQuery } from "@tanstack/react-query";
|
|
import { CAMBASE } from "../../../utils/config";
|
|
import type { CameraID } from "../../../app/config/cameraConfig";
|
|
|
|
const targetDectionFeed = async (cameraFeedID: CameraID | 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: CameraID | 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: CameraID | 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 };
|
|
};
|