first commit
This commit is contained in:
40
frontend/src/hooks/useHistoricalImport.ts
Normal file
40
frontend/src/hooks/useHistoricalImport.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
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 };
|
||||
}
|
||||
Reference in New Issue
Block a user