41 lines
1.3 KiB
TypeScript
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 };
|
|
}
|