feat: allow transfer dialog to be opened with selected asset

This commit is contained in:
Matthew Russell
2023-05-17 19:46:48 -07:00
parent 5fab1e738c
commit d7bf9f887f
4 changed files with 17 additions and 8 deletions
@@ -60,7 +60,7 @@ export const AccountsActionsDropdown = ({
<DropdownMenuItem
key={'transfer'}
data-testid="transfer"
onClick={() => openTransferDialog(true)}
onClick={() => openTransferDialog(true, assetId)}
>
<VegaIcon name={VegaIconNames.TRANSFER} size={16} />
{t('Transfer')}
+2 -1
View File
@@ -14,7 +14,7 @@ import { TransferForm } from './transfer-form';
import { useTransferDialog } from './transfer-dialog';
import { Lozenge } from '@vegaprotocol/ui-toolkit';
export const TransferContainer = () => {
export const TransferContainer = ({ assetId }: { assetId?: string }) => {
const { pubKey, pubKeys } = useVegaWallet();
const open = useTransferDialog((store) => store.open);
const { param } = useNetworkParam(NetworkParams.transfer_fee_factor);
@@ -59,6 +59,7 @@ export const TransferContainer = () => {
pubKey={pubKey}
pubKeys={pubKeys ? pubKeys?.map((pk) => pk.publicKey) : null}
assets={assets}
assetId={assetId}
feeFactor={param}
submitTransfer={transfer}
/>
+7 -5
View File
@@ -5,24 +5,26 @@ import { TransferContainer } from './transfer-container';
interface State {
isOpen: boolean;
assetId: string | undefined;
}
interface Actions {
open: (open?: boolean) => void;
open: (open?: boolean, assetId?: string) => void;
}
export const useTransferDialog = create<State & Actions>()((set) => ({
isOpen: false,
open: (open = true) => {
set(() => ({ isOpen: open }));
assetId: undefined,
open: (open = true, assetId) => {
set(() => ({ isOpen: open, assetId }));
},
}));
export const TransferDialog = () => {
const { isOpen, open } = useTransferDialog();
const { isOpen, open, assetId } = useTransferDialog();
return (
<Dialog title={t('Transfer')} open={isOpen} onChange={open} size="small">
<TransferContainer />
<TransferContainer assetId={assetId} />
</Dialog>
);
};
+7 -1
View File
@@ -41,6 +41,7 @@ interface TransferFormProps {
decimals: number;
balance: string;
}>;
assetId?: string;
feeFactor: string | null;
submitTransfer: (transfer: Transfer) => void;
}
@@ -49,6 +50,7 @@ export const TransferForm = ({
pubKey,
pubKeys,
assets,
assetId: initialAssetId,
feeFactor,
submitTransfer,
}: TransferFormProps) => {
@@ -59,7 +61,11 @@ export const TransferForm = ({
handleSubmit,
setValue,
formState: { errors },
} = useForm<FormFields>();
} = useForm<FormFields>({
defaultValues: {
asset: initialAssetId,
},
});
const amount = watch('amount');
const assetId = watch('asset');