Files
dmenu-admin/src/pages/orders/hooks/useOrderData.ts
T
hamid zarghami 223b1b5e8f base create order
2026-06-23 10:12:56 +03:30

75 lines
2.4 KiB
TypeScript

import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import * as api from "../service/OrderService";
import type { GetOrdersParams, ChangeOrderStatusParams, RefundPaymentParams } from "../service/OrderService";
export const useCreateOrder = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: api.createOrder,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["orders"] });
},
});
};
export const useGetOrders = (params?: GetOrdersParams) => {
return useQuery({
queryKey: ["orders", params],
queryFn: () => api.getOrders(params),
});
};
export const useGetOrderById = (orderId: string) => {
return useQuery({
queryKey: ["order", orderId],
queryFn: () => api.getOrderById(orderId),
enabled: !!orderId,
});
};
export const useConfirmOrder = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (orderId: string) => api.confirmOrder(orderId),
onSuccess: (_, orderId) => {
queryClient.invalidateQueries({ queryKey: ["order", orderId] });
queryClient.invalidateQueries({ queryKey: ["orders"] });
},
});
};
export const useVerifyPayment = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (paymentId: string) => api.verifyPayment(paymentId),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["order"] });
queryClient.invalidateQueries({ queryKey: ["orders"] });
},
});
};
export const useChangeOrderStatus = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ orderId, status, params }: { orderId: string; status: string; params?: ChangeOrderStatusParams }) =>
api.changeOrderStatus(orderId, status, params),
onSuccess: (_, { orderId }) => {
queryClient.invalidateQueries({ queryKey: ["order", orderId] });
queryClient.invalidateQueries({ queryKey: ["orders"] });
},
});
};
export const useRefundPayment = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ orderId, params }: { orderId: string; params: RefundPaymentParams }) =>
api.refundPayment(orderId, params),
onSuccess: (_, { orderId }) => {
queryClient.invalidateQueries({ queryKey: ["order", orderId] });
queryClient.invalidateQueries({ queryKey: ["orders"] });
},
});
};