91 lines
2.4 KiB
TypeScript
91 lines
2.4 KiB
TypeScript
import { useResourceByName } from "../../../react-openapi";
|
|
import { api } from "../../../react-openapi/api/client";
|
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
import type { ResolveAmbiguityPayload } from "./fetch-requests.models";
|
|
|
|
export function useFetchRequestsList(params?: {
|
|
status?: string;
|
|
account_name?: string;
|
|
source_type?: string;
|
|
}) {
|
|
const { useList } = useResourceByName("fetch-requests");
|
|
return useList(params);
|
|
}
|
|
|
|
export function useFetchRequest(id: string) {
|
|
const { useRead } = useResourceByName("fetch-requests");
|
|
return useRead(id);
|
|
}
|
|
|
|
export function useCreateFetchRequest() {
|
|
const { useCreate } = useResourceByName("fetch-requests");
|
|
return useCreate();
|
|
}
|
|
|
|
export function useUpdateFetchRequest() {
|
|
const { usePatch } = useResourceByName("fetch-requests");
|
|
return usePatch();
|
|
}
|
|
|
|
export function useDeleteFetchRequest() {
|
|
const { useDelete } = useResourceByName("fetch-requests");
|
|
return useDelete();
|
|
}
|
|
|
|
export function useUploadFile() {
|
|
return useMutation({
|
|
mutationFn: async (file: File) => {
|
|
const arrayBuffer = await file.arrayBuffer();
|
|
const binary = new Uint8Array(arrayBuffer);
|
|
const res = await api.post("/uploads", binary, {
|
|
headers: {
|
|
"Content-Type": file.type,
|
|
"Content-Disposition": `attachment; filename="${file.name}"`,
|
|
},
|
|
});
|
|
return res.data;
|
|
},
|
|
});
|
|
}
|
|
|
|
export function useFetchRequestAmbiguities(fetchRequestId: string) {
|
|
return useQuery({
|
|
queryKey: ["fetch-requests", fetchRequestId, "ambiguities"],
|
|
queryFn: async () => {
|
|
const res = await api.get(
|
|
`/fetch-requests/${fetchRequestId}/ambiguities`
|
|
);
|
|
return res.data;
|
|
},
|
|
enabled: !!fetchRequestId,
|
|
});
|
|
}
|
|
|
|
export function useResolveAmbiguity() {
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: async ({
|
|
ambiguityId,
|
|
payload,
|
|
}: {
|
|
ambiguityId: string;
|
|
payload: ResolveAmbiguityPayload;
|
|
}) => {
|
|
const res = await api.post(
|
|
`/ambiguities/${ambiguityId}/resolve`,
|
|
payload
|
|
);
|
|
return res.data;
|
|
},
|
|
onSuccess: (data: any) => {
|
|
queryClient.invalidateQueries({
|
|
queryKey: ["fetch-requests", data.fetch_request, "ambiguities"],
|
|
});
|
|
queryClient.invalidateQueries({
|
|
queryKey: ["fetch-requests", "detail", data.fetch_request],
|
|
});
|
|
},
|
|
});
|
|
}
|