87e1f9998e
* feat: add eth and vega transaction stores feat: replace useStoredEthereumTransaction with useEthTransactionManager feat: add event bus subsciption to vega transaction store feat: handle order cancellation feat: rename Deposit, Order and Withdraw status field to be unique Revert "feat: rename Deposit, Order and Withdraw status field to be unique" This reverts commit f0b314d53fb3ada6fbebaba4fd1e5af6f38beaed. feat: split transaction update subscription feat: handle order and deposit transaction feat: handle withdrawal creation through transaction store feat: handle withdraw approval feat: handle panding withdrawls, add createdAt feat: handle transaction toast/dialog dismissal feat: add use vega transaction store tests feat: add use vega transaction store tests feat: add use vega transaction menager tests feat: add use vega transaction menager tests feat: add use vega transaction updater tests feat: improve use vega transaction updater tests feat: add use eth transaction store feat: add use eth withdraw approvals store feat: add use eth transaction updater tests fixed tests * feat: toasts feat: toasts feat: toasts * feat: add use eth withdraw approval manager tests * feat: add use eth transaction manager tests * feat: add use eth transaction manager tests * feat: add useEthWithdrawApprovalsManager tests * feat: remove Web3Container react container from CreateWithdrawalDialog * feat: remove Web3Container react container around TransactionsHandler * feat: remove unnecessary async from PendingWithdrawalsTable * feat: remove comments from WithdrawalFeedback * fixed z-index issue * cypress Co-authored-by: Bartłomiej Głownia <bglownia@gmail.com>
60 lines
1.8 KiB
TypeScript
60 lines
1.8 KiB
TypeScript
import { useApolloClient } from '@apollo/client';
|
|
import { useVegaWallet } from './use-vega-wallet';
|
|
import {
|
|
useOrderBusEventsSubscription,
|
|
useWithdrawalBusEventSubscription,
|
|
useTransactionEventSubscription,
|
|
} from './__generated__/TransactionResult';
|
|
import { useVegaTransactionStore } from './use-vega-transaction-store';
|
|
|
|
import { waitForWithdrawalApproval } from './wait-for-withdrawal-approval';
|
|
|
|
export const useVegaTransactionUpdater = () => {
|
|
const client = useApolloClient();
|
|
const { updateWithdrawal, updateOrder, updateTransaction } =
|
|
useVegaTransactionStore((state) => ({
|
|
updateWithdrawal: state.updateWithdrawal,
|
|
updateOrder: state.updateOrder,
|
|
updateTransaction: state.updateTransactionResult,
|
|
}));
|
|
const { pubKey } = useVegaWallet();
|
|
const variables = { partyId: pubKey || '' };
|
|
const skip = !pubKey;
|
|
|
|
useOrderBusEventsSubscription({
|
|
variables,
|
|
skip,
|
|
onData: ({ data: result }) =>
|
|
result.data?.busEvents?.forEach((event) => {
|
|
if (event.event.__typename === 'Order') {
|
|
updateOrder(event.event);
|
|
}
|
|
}),
|
|
});
|
|
|
|
useWithdrawalBusEventSubscription({
|
|
variables,
|
|
skip,
|
|
onData: ({ data: result }) =>
|
|
result.data?.busEvents?.forEach((event) => {
|
|
if (event.event.__typename === 'Withdrawal') {
|
|
const withdrawal = event.event;
|
|
waitForWithdrawalApproval(withdrawal.id, client).then((approval) =>
|
|
updateWithdrawal(withdrawal, approval)
|
|
);
|
|
}
|
|
}),
|
|
});
|
|
|
|
useTransactionEventSubscription({
|
|
variables,
|
|
skip,
|
|
onData: ({ data: result }) =>
|
|
result.data?.busEvents?.forEach((event) => {
|
|
if (event.event.__typename === 'TransactionResult') {
|
|
updateTransaction(event.event);
|
|
}
|
|
}),
|
|
});
|
|
};
|