From 1b49326c8251f421f7afbfbc6d36042296ae9be8 Mon Sep 17 00:00:00 2001 From: madalinaraicu Date: Tue, 12 Jul 2022 19:56:08 +0300 Subject: [PATCH] fix: #657 sub only when id set --- .../src/lib/order-hooks/use-order-cancel.tsx | 41 +++++++++++-------- .../src/lib/order-hooks/use-order-submit.ts | 41 +++++++++++-------- 2 files changed, 46 insertions(+), 36 deletions(-) diff --git a/libs/orders/src/lib/order-hooks/use-order-cancel.tsx b/libs/orders/src/lib/order-hooks/use-order-cancel.tsx index 3486cb1b3..e1081f42a 100644 --- a/libs/orders/src/lib/order-hooks/use-order-cancel.tsx +++ b/libs/orders/src/lib/order-hooks/use-order-cancel.tsx @@ -17,7 +17,7 @@ export const useOrderCancel = () => { const { send, transaction, reset: resetTransaction } = useVegaTransaction(); const [updatedOrder, setUpdatedOrder] = useState(null); - const [id, setId] = useState(''); + const [id, setId] = useState(null); const client = useApolloClient(); const subRef = useRef(null); @@ -33,7 +33,7 @@ export const useOrderCancel = () => { subRef.current?.unsubscribe(); resetTransaction(); setUpdatedOrder(null); - setId(''); + setId(null); }, [resetTransaction]); const clientSub = client.subscribe({ @@ -41,25 +41,30 @@ export const useOrderCancel = () => { variables: { partyId: keypair?.pub || '' }, }); - // Start a subscription looking for the newly created order - subRef.current = clientSub.subscribe(({ data }) => { - if (!data?.busEvents?.length) { - return; - } - - // No types available for the subscription result - const matchingOrderEvent = data.busEvents.find((e) => { - if (e.event.__typename !== 'Order') { - return false; + if (id) { + // Start a subscription looking for the newly created order + subRef.current = clientSub.subscribe(({ data }) => { + if (!data?.busEvents?.length) { + return; } - return e.event.id === id; - }); + // No types available for the subscription result + const matchingOrderEvent = data.busEvents.find((e) => { + if (e.event.__typename !== 'Order') { + return false; + } - if (matchingOrderEvent && matchingOrderEvent.event.__typename === 'Order') { - setUpdatedOrder(matchingOrderEvent.event); - } - }); + return e.event.id === id; + }); + + if ( + matchingOrderEvent && + matchingOrderEvent.event.__typename === 'Order' + ) { + setUpdatedOrder(matchingOrderEvent.event); + } + }); + } const cancel = useCallback( async (order) => { diff --git a/libs/orders/src/lib/order-hooks/use-order-submit.ts b/libs/orders/src/lib/order-hooks/use-order-submit.ts index f334dc23d..26c780a90 100644 --- a/libs/orders/src/lib/order-hooks/use-order-submit.ts +++ b/libs/orders/src/lib/order-hooks/use-order-submit.ts @@ -17,7 +17,7 @@ import type { Subscription } from 'zen-observable-ts'; export const useOrderSubmit = (market: Market) => { const { keypair } = useVegaWallet(); const { send, transaction, reset: resetTransaction } = useVegaTransaction(); - const [id, setId] = useState(''); + const [id, setId] = useState(null); const [finalizedOrder, setFinalizedOrder] = useState(null); const client = useApolloClient(); @@ -26,7 +26,7 @@ export const useOrderSubmit = (market: Market) => { subRef.current?.unsubscribe(); resetTransaction(); setFinalizedOrder(null); - setId(''); + setId(null); }, [resetTransaction]); const subRef = useRef(null); @@ -43,25 +43,30 @@ export const useOrderSubmit = (market: Market) => { variables: { partyId: keypair?.pub || '' }, }); - // Start a subscription looking for the newly created order - subRef.current = clientSub.subscribe(({ data }) => { - if (!data?.busEvents?.length) { - return; - } - - // No types available for the subscription result - const matchingOrderEvent = data.busEvents.find((e) => { - if (e.event.__typename !== 'Order') { - return false; + if (id) { + // Start a subscription looking for the newly created order + subRef.current = clientSub.subscribe(({ data }) => { + if (!data?.busEvents?.length) { + return; } - return e.event.id === id; - }); + // No types available for the subscription result + const matchingOrderEvent = data.busEvents.find((e) => { + if (e.event.__typename !== 'Order') { + return false; + } - if (matchingOrderEvent && matchingOrderEvent.event.__typename === 'Order') { - setFinalizedOrder(matchingOrderEvent.event); - } - }); + return e.event.id === id; + }); + + if ( + matchingOrderEvent && + matchingOrderEvent.event.__typename === 'Order' + ) { + setFinalizedOrder(matchingOrderEvent.event); + } + }); + } const submit = useCallback( async (order: Order) => {