Files
solar-pv-dashboard/frontend/src/hooks/useHistoricalImport.ts
Mateusz Gruszczyński c5cc2efbac first commit
2026-03-23 15:56:18 +01:00

41 lines
1.3 KiB
TypeScript

import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { api } from "../api/client";
import type { HistoricalStartPayload } from "../types";
export function useHistoricalImport(enabled = true) {
const queryClient = useQueryClient();
const status = useQuery({
queryKey: ["historical-status"],
queryFn: api.getHistoricalStatus,
staleTime: 5 * 1000,
enabled,
refetchInterval: (query) => (query.state.data?.running ? 3000 : 15000),
});
const start = useMutation({
mutationFn: (payload: HistoricalStartPayload) => api.startHistoricalImport(payload),
onSuccess: async () => {
await queryClient.invalidateQueries({ queryKey: ["historical-status"] });
await queryClient.invalidateQueries({ queryKey: ["analytics"] });
await queryClient.invalidateQueries({ queryKey: ["distribution"] });
},
});
const syncNow = useMutation({
mutationFn: api.syncHistoricalNow,
onSuccess: async () => {
await queryClient.invalidateQueries({ queryKey: ["historical-status"] });
},
});
const cancel = useMutation({
mutationFn: api.cancelHistoricalImport,
onSuccess: async () => {
await queryClient.invalidateQueries({ queryKey: ["historical-status"] });
},
});
return { status, start, syncNow, cancel };
}