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 }; }