shoc-frontend-new/src/domain/vendors/use-cases/use-update-vendor.ts

27 lines
1.1 KiB
TypeScript

import { useMutation, useQueryClient, type UseMutationResult } from "@tanstack/react-query";
import { toast } from "react-toastify";
import { vendorsApi } from "@/domain/vendors/api/vendors-api";
import type { VendorFormValues } from "@/domain/vendors/schemas/vendor-schema";
import type { Vendor } from "@/domain/vendors/types/vendor";
import { queryKeys } from "@/infra/query-key/query-key";
interface UpdateVendorInput {
id: string | number;
values: VendorFormValues;
}
export function useUpdateVendor(): UseMutationResult<Vendor, Error, UpdateVendorInput> {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ id, values }: UpdateVendorInput) => vendorsApi.update(id, values),
onSuccess: (_data, variables) => {
void queryClient.invalidateQueries({ queryKey: queryKeys.vendors.all });
void queryClient.invalidateQueries({ queryKey: queryKeys.vendors.detail(variables.id) });
toast.success("Vendor updated");
},
onError: (error: Error) => {
toast.error(error.message || "Failed to update vendor");
},
});
}