75 lines
2.4 KiB
TypeScript
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"] });
|
|
},
|
|
});
|
|
};
|