From 79a6d2091009aa0fe5d32a3b00abc60828a80424 Mon Sep 17 00:00:00 2001 From: ameerul hady Date: Thu, 14 Dec 2023 16:38:18 +0800 Subject: [PATCH] feat: added p2p_order_cancel hook --- packages/api/src/hooks/p2p/useOrderCancel.ts | 41 ++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 packages/api/src/hooks/p2p/useOrderCancel.ts diff --git a/packages/api/src/hooks/p2p/useOrderCancel.ts b/packages/api/src/hooks/p2p/useOrderCancel.ts new file mode 100644 index 000000000000..25d657baf4f3 --- /dev/null +++ b/packages/api/src/hooks/p2p/useOrderCancel.ts @@ -0,0 +1,41 @@ +import { useCallback } from 'react'; +import useMutation from '../../useMutation'; +import useInvalidateQuery from '../../useInvalidateQuery'; + +type TOrderCancelPayload = NonNullable< + Parameters>['mutate']> +>[0]['payload']; + +/** A custom hook that cancels a P2P order. + * + * To cancel an order, specify the following payload arguments in the `mutate` call: + * @example + * mutate({ + * id: "1234", + }); + * +*/ +const useOrderCancel = () => { + const invalidate = useInvalidateQuery(); + const { + data, + mutate: _mutate, + ...rest + } = useMutation('p2p_order_cancel', { + onSuccess: () => { + invalidate('p2p_order_info'); + }, + }); + + const mutate = useCallback((payload: TOrderCancelPayload) => _mutate({ payload }), [_mutate]); + + return { + /** An object that contains the id and status of the order */ + data: data?.p2p_order_cancel, + /** A function that cancels a specific order */ + mutate, + ...rest, + }; +}; + +export default useOrderCancel;