From f28aabfdc7ad4deb5ee72d14d032fda3e6a21a19 Mon Sep 17 00:00:00 2001 From: fbwoolf Date: Tue, 21 Mar 2023 14:57:55 -0500 Subject: [PATCH] refactor: btc send form --- .../validation/forms/recipient-validators.ts | 25 ------- .../components/fee-estimate-select.layout.tsx | 2 +- .../components/collectible-asset.tsx | 29 +++++--- .../send-inscription-form.tsx | 16 +++-- ...inal-inscription-form-validation-schema.ts | 3 +- .../components/available-balance.tsx | 14 ---- .../components/form-errors.tsx | 60 ---------------- .../components/form-fields.layout.tsx | 20 ------ .../{footer.tsx => form-footer.tsx} | 11 +-- .../components/recipient-field.tsx | 3 + .../recipient-address-displayer.tsx} | 27 ++++--- .../hooks/use-recipient-bns-name.tsx | 47 ++++++++++++ .../hooks/use-recipient-select-fields.tsx} | 13 ++-- .../recipient-field-address.tsx | 0 .../recipient-field-bns-name.tsx | 19 +++-- .../recipient-select-item.tsx | 12 +++- .../components/recipient-select-overlay.tsx | 0 .../recipient-select.layout.tsx | 0 .../recipient-select/recipient-select.tsx | 4 +- .../send-crypto-asset-form.layout.tsx | 18 +++-- .../components/text-input-field.tsx | 1 + .../components/bitcoin-recipient-field.tsx | 52 ++++++++++++++ .../components/testnet-btc-message.tsx | 2 +- .../bitcoin/hooks}/use-generate-bitcoin-tx.ts | 0 .../stacks-recipient-field.tsx | 12 ++-- .../components/recipient-bns-address.tsx | 61 ---------------- .../hooks/use-stacks-recipient-bns-name.tsx | 40 ----------- .../stacks/hooks}/use-stacks-ft-params.ts | 0 .../form/btc/btc-send-form.tsx | 71 +++++++++---------- .../btc/components/btc-recipient-field.tsx | 64 ----------------- .../form/btc/use-btc-send-form.tsx | 17 ++--- .../stacks-sip10-fungible-token-send-form.tsx | 22 +++--- .../form/stacks-sip10/use-sip10-send-form.tsx | 2 +- .../form/stx/stx-send-form.tsx | 22 +++--- src/shared/models/form.model.ts | 1 + tests/page-object-models/send.page.ts | 19 +++-- tests/selectors/send.selectors.ts | 3 +- tests/specs/send/send-btc.spec.ts | 1 - tests/specs/send/send-stx.spec.ts | 23 +++--- 39 files changed, 291 insertions(+), 445 deletions(-) delete mode 100644 src/app/pages/send/send-crypto-asset-form/components/available-balance.tsx delete mode 100644 src/app/pages/send/send-crypto-asset-form/components/form-errors.tsx delete mode 100644 src/app/pages/send/send-crypto-asset-form/components/form-fields.layout.tsx rename src/app/pages/send/send-crypto-asset-form/components/{footer.tsx => form-footer.tsx} (72%) rename src/app/pages/send/send-crypto-asset-form/{family/stacks/components/stacks-recipient-field/components/recipient-bns-address-displayer.tsx => components/recipient-select-fields/components/recipient-address-displayer.tsx} (65%) create mode 100644 src/app/pages/send/send-crypto-asset-form/components/recipient-select-fields/hooks/use-recipient-bns-name.tsx rename src/app/pages/send/send-crypto-asset-form/{family/stacks/components/stacks-recipient-field/hooks/use-stacks-recipient-field.tsx => components/recipient-select-fields/hooks/use-recipient-select-fields.tsx} (81%) rename src/app/pages/send/send-crypto-asset-form/{family/stacks/components/stacks-recipient-field/components => components/recipient-select-fields}/recipient-field-address.tsx (100%) rename src/app/pages/send/send-crypto-asset-form/{family/stacks/components/stacks-recipient-field/components => components/recipient-select-fields}/recipient-field-bns-name.tsx (67%) rename src/app/pages/send/send-crypto-asset-form/components/recipient-select/{ => components}/recipient-select-item.tsx (68%) rename src/app/pages/send/send-crypto-asset-form/{family/stacks/components/stacks-recipient-field => components/recipient-select}/components/recipient-select-overlay.tsx (100%) rename src/app/pages/send/send-crypto-asset-form/components/recipient-select/{ => components}/recipient-select.layout.tsx (100%) create mode 100644 src/app/pages/send/send-crypto-asset-form/family/bitcoin/components/bitcoin-recipient-field.tsx rename src/app/pages/send/send-crypto-asset-form/{form/btc => family/bitcoin}/components/testnet-btc-message.tsx (91%) rename src/app/pages/send/send-crypto-asset-form/{form/btc => family/bitcoin/hooks}/use-generate-bitcoin-tx.ts (100%) rename src/app/pages/send/send-crypto-asset-form/family/stacks/components/{stacks-recipient-field => }/stacks-recipient-field.tsx (68%) delete mode 100644 src/app/pages/send/send-crypto-asset-form/family/stacks/components/stacks-recipient-field/components/recipient-bns-address.tsx delete mode 100644 src/app/pages/send/send-crypto-asset-form/family/stacks/components/stacks-recipient-field/hooks/use-stacks-recipient-bns-name.tsx rename src/app/pages/send/send-crypto-asset-form/{form/stacks-sip10 => family/stacks/hooks}/use-stacks-ft-params.ts (100%) delete mode 100644 src/app/pages/send/send-crypto-asset-form/form/btc/components/btc-recipient-field.tsx diff --git a/src/app/common/validation/forms/recipient-validators.ts b/src/app/common/validation/forms/recipient-validators.ts index 0f24ddb3..d8f04b0e 100644 --- a/src/app/common/validation/forms/recipient-validators.ts +++ b/src/app/common/validation/forms/recipient-validators.ts @@ -1,13 +1,8 @@ -import * as yup from 'yup'; - import { NetworkConfiguration } from '@shared/constants'; import { FormErrorMessages } from '@app/common/error-messages'; -import { fetchBtcNameOwner } from '@app/query/stacks/bns/bns.utils'; -import { StacksClient } from '@app/query/stacks/stacks-client'; import { - btcAddressValidator, notCurrentAddressValidator, stxAddressNetworkValidator, stxAddressValidator, @@ -21,23 +16,3 @@ export function stxRecipientValidator( .concat(stxAddressNetworkValidator(currentNetwork)) .concat(notCurrentAddressValidator(currentAddress || '')); } - -export function btcRecipientAddressOrBnsNameValidator({ client }: { client: StacksClient }) { - return yup.string().test({ - name: 'btcRecipientOrBnsName', - message: FormErrorMessages.InvalidAddress, - test: async value => { - try { - await btcAddressValidator().validate(value); - return true; - } catch (e) {} - try { - const btcAddress = await fetchBtcNameOwner(client, value ?? ''); - await btcAddressValidator().validate(btcAddress); - return true; - } catch (error) { - return false; - } - }, - }); -} diff --git a/src/app/components/fees-row/components/fee-estimate-select.layout.tsx b/src/app/components/fees-row/components/fee-estimate-select.layout.tsx index c38f8d82..50239dcc 100644 --- a/src/app/components/fees-row/components/fee-estimate-select.layout.tsx +++ b/src/app/components/fees-row/components/fee-estimate-select.layout.tsx @@ -50,7 +50,7 @@ export function FeeEstimateSelectLayout(props: FeeEstimateSelectLayoutProps) { position="absolute" ref={ref} style={styles} - top="-100px" + top="-35px" zIndex={9999} > {children} diff --git a/src/app/pages/send/ordinal-inscription/components/collectible-asset.tsx b/src/app/pages/send/ordinal-inscription/components/collectible-asset.tsx index 62f6c032..c6e33714 100644 --- a/src/app/pages/send/ordinal-inscription/components/collectible-asset.tsx +++ b/src/app/pages/send/ordinal-inscription/components/collectible-asset.tsx @@ -10,14 +10,25 @@ interface CollectibleAssetProps { } export function CollectibleAsset({ icon, name, symbol }: CollectibleAssetProps) { return ( - - - {icon} - - {name} - - {symbol && ({symbol.toUpperCase()})} - - + + + + {icon} + + {name} + + {symbol && ({symbol.toUpperCase()})} + + + ); } diff --git a/src/app/pages/send/ordinal-inscription/send-inscription-form.tsx b/src/app/pages/send/ordinal-inscription/send-inscription-form.tsx index 747f7bc2..19c3bdfe 100644 --- a/src/app/pages/send/ordinal-inscription/send-inscription-form.tsx +++ b/src/app/pages/send/ordinal-inscription/send-inscription-form.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import { Box, Button } from '@stacks/ui'; +import { Box, Button, Flex } from '@stacks/ui'; import BigNumber from 'bignumber.js'; import { Form, Formik } from 'formik'; @@ -16,8 +16,6 @@ import { OrdinalIcon } from '@app/components/icons/ordinal-icon'; import { getNumberOfInscriptionOnUtxo } from '@app/query/bitcoin/ordinals/utils'; import { BtcSizeFeeEstimator } from '../../../common/transactions/bitcoin/fees/btc-size-fee-estimator'; -import { FormErrors } from '../send-crypto-asset-form/components/form-errors'; -import { FormFieldsLayout } from '../send-crypto-asset-form/components/form-fields.layout'; import { RecipientField } from '../send-crypto-asset-form/components/recipient-field'; import { CollectibleAsset } from './components/collectible-asset'; import { CollectiblePreviewCard } from './components/collectible-preview-card'; @@ -107,12 +105,15 @@ export function SendInscriptionForm() { - + } name="Ordinal inscription" /> - - + + - {currentError && ( {currentError} @@ -120,6 +121,7 @@ export function SendInscriptionForm() { )}