vega-frontend-monorepo/libs/withdraws/src/lib/withdrawal-dialogs.tsx
Matthew Russell 5eb06254de
feat (#896): large withdraws (#1180)
* feat: add deposits table to deposits tab on portfolio page

* feat: refactor use-withdraw hook to not invoke eth tx

* feat: rename hook for clarity

* feat: fix withdrawal creation test

* feat: update withdraw-manager and withrawals-table tests

* chore: fix lint

* feat: remove web3 input to avoid double dialog

* chore: use renderHook from testing-library/react

* chore: update to use non deprecated fields

* chore: remove usage of all bridge contract

* feat: correctly merge cache update in withdrawals table

* feat: changes to support token app withdrawals

* chore: add height to ag grid table wrapping element

* feat: add txhash col to withdraw table

* feat: provide better ui if withdrawal is not ready to be completed

* feat: use separate dialogs for txs

* feat: allow user to immediately complete withdrawal if delay not triggered

* feat: add withdraw store to tidy up state management

* chore: fix tests

* chore: convert callback to promises, fix tests, delete withdraw page

* chore: fix lint errors

* fix: withdrawals link in nav

* feat: style changes after design update

* fix: proposal form test

* chore: tidy error ui logic

* feat: review comments

* chore: lint

* feat: add better typing for tables

* chore: put withdrawals tab at the end

* chore: update i18n

* fix: dialog in positions manager due to rename

* chore: increase spacing in withdrawal form

* chore: update tests

* chore: lint

* chore: use new assetsConnection and update cy test

* fix: incorrect shape of withdrawal generate function

* feat: delete withdrawals page now that its shown on the portfolio page

* chore: update tests to check for withdrawals page

* chore: fix tests again

* fix: page title test
2022-09-05 18:30:13 -07:00

50 lines
1.5 KiB
TypeScript

import { t } from '@vegaprotocol/react-helpers';
import { Dialog } from '@vegaprotocol/ui-toolkit';
import { useVegaWallet } from '@vegaprotocol/wallet';
import { useCompleteWithdraw } from './use-complete-withdraw';
import { useCreateWithdraw } from './use-create-withdraw';
import { WithdrawFormContainer } from './withdraw-form-container';
import { WithdrawalFeedback } from './withdrawal-feedback';
export const WithdrawalDialogs = ({
withdrawDialog,
setWithdrawDialog,
}: {
withdrawDialog: boolean;
setWithdrawDialog: (open: boolean) => void;
}) => {
const { keypair } = useVegaWallet();
const createWithdraw = useCreateWithdraw();
const completeWithdraw = useCompleteWithdraw();
return (
<>
<Dialog
title={t('Withdraw')}
open={withdrawDialog}
onChange={(isOpen) => setWithdrawDialog(isOpen)}
size="small"
>
<WithdrawFormContainer
partyId={keypair?.pub}
submit={(args) => {
setWithdrawDialog(false);
createWithdraw.submit(args);
}}
/>
</Dialog>
<createWithdraw.Dialog>
<WithdrawalFeedback
withdrawal={createWithdraw.withdrawal}
transaction={createWithdraw.transaction}
availableTimestamp={createWithdraw.availableTimestamp}
submitWithdraw={(id) => {
createWithdraw.reset();
completeWithdraw.submit(id);
}}
/>
</createWithdraw.Dialog>
<completeWithdraw.Dialog />
</>
);
};