39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
import * as api from "../service/InvoiceService";
|
|
|
|
export const useGetInvoices = (params: api.GetInvoicesParams) => {
|
|
return useQuery({
|
|
queryKey: ["invoices", params.statuses?.join(",") ?? ""],
|
|
queryFn: () => api.getInvoices(params),
|
|
});
|
|
};
|
|
|
|
export const useGetInvoiceTabCounts = () => {
|
|
return useQuery({
|
|
queryKey: ["invoice-tab-counts"],
|
|
queryFn: () => api.getInvoiceTabCounts(),
|
|
refetchInterval: 20_000,
|
|
});
|
|
};
|
|
|
|
export const useGetInvoiceDetail = (id: string) => {
|
|
return useQuery({
|
|
queryKey: ["invoice", id],
|
|
queryFn: () => api.getInvoiceDetail(id),
|
|
enabled: !!id,
|
|
});
|
|
};
|
|
|
|
export const useConfirmInvoiceItem = () => {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: api.confrimInvoiceItem,
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: ["invoices"] });
|
|
queryClient.invalidateQueries({ queryKey: ["invoice"] });
|
|
queryClient.invalidateQueries({ queryKey: ["invoice-tab-counts"] });
|
|
},
|
|
});
|
|
};
|