2024-05-08 17:46:10 +03:00
|
|
|
import { Preview } from "@/types/preview";
|
|
|
|
|
import { TimeRange } from "@/types/timeline";
|
|
|
|
|
import { useEffect, useState } from "react";
|
|
|
|
|
import useSWR from "swr";
|
|
|
|
|
|
|
|
|
|
type OptionalCameraPreviewProps = {
|
|
|
|
|
camera?: string;
|
|
|
|
|
autoRefresh?: boolean;
|
|
|
|
|
fetchPreviews?: boolean;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export function useCameraPreviews(
|
|
|
|
|
initialTimeRange: TimeRange,
|
|
|
|
|
{
|
|
|
|
|
camera = "all",
|
|
|
|
|
autoRefresh = true,
|
|
|
|
|
fetchPreviews = true,
|
|
|
|
|
}: OptionalCameraPreviewProps,
|
|
|
|
|
) {
|
|
|
|
|
const [timeRange, setTimeRange] = useState(initialTimeRange);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
setTimeRange(initialTimeRange);
|
|
|
|
|
}, [initialTimeRange]);
|
|
|
|
|
|
|
|
|
|
const { data: allPreviews } = useSWR<Preview[]>(
|
|
|
|
|
fetchPreviews
|
2024-05-09 16:20:33 +03:00
|
|
|
? `preview/${camera}/start/${Math.round(timeRange.after)}/end/${Math.round(timeRange.before)}`
|
2024-05-08 17:46:10 +03:00
|
|
|
: null,
|
2024-05-21 16:00:29 +03:00
|
|
|
{ revalidateOnFocus: autoRefresh, revalidateOnReconnect: autoRefresh },
|
2024-05-08 17:46:10 +03:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return allPreviews;
|
|
|
|
|
}
|