import { useDataSource } from "@erp/core/hooks"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { CustomerData, CustomerUpdateData } from "../schemas"; import { CUSTOMER_QUERY_KEY } from "./use-customer-query"; export const CUSTOMERS_LIST_KEY = ["customers"] as const; type UpdateCustomerPayload = { id: string; data: CustomerUpdateData; }; export function useUpdateCustomerMutation() { const queryClient = useQueryClient(); const dataSource = useDataSource(); return useMutation({ mutationKey: ["customer:update"], //, customerId], mutationFn: async (payload) => { const { id: customerId, data } = payload; if (!customerId) { throw new Error("customerId is required"); } const updated = await dataSource.updateOne("customers", customerId, data); return updated as CustomerData; }, onSuccess: (updated, variables) => { const { id: customerId } = variables; // Refresca inmediatamente el detalle queryClient.setQueryData(CUSTOMER_QUERY_KEY(customerId), updated); // Otra opción es invalidar el detalle para forzar refetch: // queryClient.invalidateQueries({ queryKey: CUSTOMER_QUERY_KEY(customerId) }); // Invalida el listado para refrescar desde servidor queryClient.invalidateQueries({ queryKey: CUSTOMERS_LIST_KEY }); }, }); }