From f0d99cb8758a553eb75ba2cc08ce69e3431d5406 Mon Sep 17 00:00:00 2001 From: Pedro Figueiredo Date: Tue, 5 Nov 2024 16:48:55 +0000 Subject: [PATCH 1/3] fix: Remove multiple overlapping spinners --- .../confirm/info/hooks/use-token-values.ts | 54 ++++++++++++------- .../confirm-loader.test.tsx.snap | 2 +- .../shared/confirm-loader/confirm-loader.tsx | 2 + .../__snapshots__/send-heading.test.tsx.snap | 2 +- .../transaction-flow-section.tsx | 3 +- ui/pages/routes/routes.component.js | 39 +++++++++++++- ui/pages/routes/routes.container.js | 10 ++++ 7 files changed, 87 insertions(+), 25 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts index 087a17c473c6..566bd1d38df1 100644 --- a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts +++ b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts @@ -23,26 +23,42 @@ export const useTokenValues = (transactionMeta: TransactionMeta) => { const decodedResponse = useDecodedTransactionData(); const { value, pending } = decodedResponse; - const decodedTransferValue = useMemo(() => { - if (!value || !decimals) { - return 0; - } + const { decodedTransferValue, isDecodedTransferValuePending } = + useMemo(() => { + if (!value) { + return { + decodedTransferValue: 0, + isDecodedTransferValuePending: false, + }; + } - const paramIndex = value.data[0].params.findIndex( - (param) => - param.value !== undefined && - !isHexString(param.value) && - param.value.length === undefined && - !isBoolean(param.value), - ); - if (paramIndex === -1) { - return 0; - } + if (!decimals) { + return { decodedTransferValue: 0, isDecodedTransferValuePending: true }; + } - return new BigNumber(value.data[0].params[paramIndex].value.toString()) - .dividedBy(new BigNumber(10).pow(Number(decimals))) - .toNumber(); - }, [value, decimals]); + const paramIndex = value.data[0].params.findIndex( + (param) => + param.value !== undefined && + !isHexString(param.value) && + param.value.length === undefined && + !isBoolean(param.value), + ); + if (paramIndex === -1) { + return { + decodedTransferValue: 0, + isDecodedTransferValuePending: false, + }; + } + + return { + decodedTransferValue: new BigNumber( + value.data[0].params[paramIndex].value.toString(), + ) + .dividedBy(new BigNumber(10).pow(Number(decimals))) + .toNumber(), + isDecodedTransferValuePending: false, + }; + }, [value, decimals]); const [exchangeRate, setExchangeRate] = useState(); const fetchExchangeRate = async () => { @@ -70,7 +86,7 @@ export const useTokenValues = (transactionMeta: TransactionMeta) => { decodedTransferValue: toNonScientificString(decodedTransferValue), displayTransferValue, fiatDisplayValue, - pending, + pending: pending || isDecodedTransferValuePending, }; }; diff --git a/ui/pages/confirmations/components/confirm/info/shared/confirm-loader/__snapshots__/confirm-loader.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/shared/confirm-loader/__snapshots__/confirm-loader.test.tsx.snap index 9ca7ce75defa..e8a34eeb7679 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/confirm-loader/__snapshots__/confirm-loader.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/shared/confirm-loader/__snapshots__/confirm-loader.test.tsx.snap @@ -3,7 +3,7 @@ exports[` renders component 1`] = `
{ display={Display.Flex} justifyContent={JustifyContent.center} alignItems={AlignItems.center} + paddingTop={4} + paddingBottom={4} > diff --git a/ui/pages/confirmations/components/confirm/info/shared/send-heading/__snapshots__/send-heading.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/shared/send-heading/__snapshots__/send-heading.test.tsx.snap index 677a5a357155..fdc069a399dc 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/send-heading/__snapshots__/send-heading.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/shared/send-heading/__snapshots__/send-heading.test.tsx.snap @@ -3,7 +3,7 @@ exports[` renders component 1`] = `
{ const { currentConfirmation: transactionMeta } = @@ -39,7 +38,7 @@ export const TransactionFlowSection = () => { addresses?.[addresses.length - 1].value; if (pending) { - return ; + return null; } const { chainId } = transactionMeta; diff --git a/ui/pages/routes/routes.component.js b/ui/pages/routes/routes.component.js index 83e707c30f85..3a2bc2989182 100644 --- a/ui/pages/routes/routes.component.js +++ b/ui/pages/routes/routes.component.js @@ -114,6 +114,10 @@ import NetworkConfirmationPopover from '../../components/multichain/network-list import NftFullImage from '../../components/app/assets/nfts/nft-details/nft-full-image'; import CrossChainSwap from '../bridge'; import { ToastMaster } from '../../components/app/toast-master/toast-master'; +import { + REDESIGN_APPROVAL_TYPES, + REDESIGN_DEV_TRANSACTION_TYPES, +} from '../confirmations/utils'; import { getConnectingLabel, hideAppHeader, @@ -174,6 +178,9 @@ export default class Routes extends Component { currentExtensionPopupId: PropTypes.number, useRequestQueue: PropTypes.bool, clearEditedNetwork: PropTypes.func.isRequired, + oldestPendingApproval: PropTypes.object.isRequired, + pendingApprovals: PropTypes.arrayOf(PropTypes.object).isRequired, + transactionsMetadata: PropTypes.arrayOf(PropTypes.object).isRequired, ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) isShowKeyringSnapRemovalResultModal: PropTypes.bool.isRequired, hideShowKeyringSnapRemovalResultModal: PropTypes.func.isRequired, @@ -419,6 +426,9 @@ export default class Routes extends Component { clearSwitchedNetworkDetails, clearEditedNetwork, privacyMode, + oldestPendingApproval, + pendingApprovals, + transactionsMetadata, ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) isShowKeyringSnapRemovalResultModal, hideShowKeyringSnapRemovalResultModal, @@ -454,7 +464,28 @@ export default class Routes extends Component { isUnlocked && !shouldShowSeedPhraseReminder; - let isLoadingShown = isLoading && completedOnboarding; + const paramsConfirmationId = location.pathname.split( + '/confirm-transaction/', + )[1]; + const confirmationId = paramsConfirmationId ?? oldestPendingApproval?.id; + const pendingApproval = pendingApprovals.find( + (approval) => approval.id === confirmationId, + ); + const isCorrectApprovalType = REDESIGN_APPROVAL_TYPES.includes( + pendingApproval?.type, + ); + const isCorrectDeveloperTransactionType = + REDESIGN_DEV_TRANSACTION_TYPES.includes( + transactionsMetadata[confirmationId]?.type, + ); + + let isLoadingShown = + isLoading && + completedOnboarding && + // In the redesigned screens, we hide the general loading spinner and the + // loading states are on a component by component basis. + !isCorrectApprovalType && + !isCorrectDeveloperTransactionType; ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) isLoadingShown = @@ -464,7 +495,11 @@ export default class Routes extends Component { (confirmation) => confirmation.type === SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.showSnapAccountRedirect, - ); + ) && + // In the redesigned screens, we hide the general loading spinner and the + // loading states are on a component by component basis. + !isCorrectApprovalType && + !isCorrectDeveloperTransactionType; ///: END:ONLY_INCLUDE_IF return ( diff --git a/ui/pages/routes/routes.container.js b/ui/pages/routes/routes.container.js index 5c08e939d1d1..e0fe5575e2c2 100644 --- a/ui/pages/routes/routes.container.js +++ b/ui/pages/routes/routes.container.js @@ -22,6 +22,9 @@ import { getNumberOfAllUnapprovedTransactionsAndMessages, getUseRequestQueue, getCurrentNetwork, + oldestPendingConfirmationSelector, + getUnapprovedTransactions, + getPendingApprovals, } from '../../selectors'; import { lockMetamask, @@ -69,6 +72,10 @@ function mapStateToProps(state) { getNetworkToAutomaticallySwitchTo(state); const switchedNetworkDetails = getSwitchedNetworkDetails(state); + const oldestPendingApproval = oldestPendingConfirmationSelector(state); + const pendingApprovals = getPendingApprovals(state); + const transactionsMetadata = getUnapprovedTransactions(state); + return { alertOpen, alertMessage, @@ -114,6 +121,9 @@ function mapStateToProps(state) { selectSwitchedNetworkNeverShowMessage(state), currentExtensionPopupId: state.metamask.currentExtensionPopupId, useRequestQueue: getUseRequestQueue(state), + oldestPendingApproval, + pendingApprovals, + transactionsMetadata, ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) isShowKeyringSnapRemovalResultModal: state.appState.showKeyringRemovalSnapModal, From 5bdcec7be46ba5b7ab5f05565908c09c7dfcae12 Mon Sep 17 00:00:00 2001 From: Pedro Figueiredo Date: Thu, 7 Nov 2024 16:51:35 +0000 Subject: [PATCH 2/3] Address comments --- .../hooks/use-approve-token-simulation.ts | 22 ++++++------ .../info/hooks/use-token-values.test.ts | 20 +---------- .../confirm/info/hooks/use-token-values.ts | 31 +++++++--------- .../native-send-heading.tsx | 36 ++++++++----------- .../info/shared/send-heading/send-heading.tsx | 21 +++++------ 5 files changed, 48 insertions(+), 82 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/approve/hooks/use-approve-token-simulation.ts b/ui/pages/confirmations/components/confirm/info/approve/hooks/use-approve-token-simulation.ts index ce264285bc13..8a95fdc3e35b 100644 --- a/ui/pages/confirmations/components/confirm/info/approve/hooks/use-approve-token-simulation.ts +++ b/ui/pages/confirmations/components/confirm/info/approve/hooks/use-approve-token-simulation.ts @@ -1,12 +1,11 @@ import { TransactionMeta } from '@metamask/transaction-controller'; import { isHexString } from '@metamask/utils'; -import { BigNumber } from 'bignumber.js'; import { isBoolean } from 'lodash'; import { useMemo } from 'react'; import { useSelector } from 'react-redux'; +import { calcTokenAmount } from '../../../../../../../../shared/lib/transactions-controller-utils'; import { getIntlLocale } from '../../../../../../../ducks/locale/locale'; import { SPENDING_CAP_UNLIMITED_MSG } from '../../../../../constants'; -import { toNonScientificString } from '../../hooks/use-token-values'; import { useDecodedTransactionData } from '../../hooks/useDecodedTransactionData'; import { useIsNFT } from './use-is-nft'; @@ -27,7 +26,7 @@ export const useApproveTokenSimulation = ( const decodedSpendingCap = useMemo(() => { if (!value) { - return 0; + return '0'; } const paramIndex = value.data[0].params.findIndex( @@ -38,23 +37,24 @@ export const useApproveTokenSimulation = ( !isBoolean(param.value), ); if (paramIndex === -1) { - return 0; + return '0'; } - return new BigNumber(value.data[0].params[paramIndex].value.toString()) - .dividedBy(new BigNumber(10).pow(Number(decimals))) - .toNumber(); + return calcTokenAmount( + value.data[0].params[paramIndex].value, + Number(decimals), + ).toFixed(); }, [value, decimals]); const formattedSpendingCap = useMemo(() => { // formatting coerces small numbers to 0 - return isNFT || decodedSpendingCap < 1 - ? toNonScientificString(decodedSpendingCap) - : new Intl.NumberFormat(locale).format(decodedSpendingCap); + return isNFT || parseInt(decodedSpendingCap, 10) < 1 + ? decodedSpendingCap + : new Intl.NumberFormat(locale).format(parseInt(decodedSpendingCap, 10)); }, [decodedSpendingCap, isNFT, locale]); const spendingCap = useMemo(() => { - if (!isNFT && isSpendingCapUnlimited(decodedSpendingCap)) { + if (!isNFT && isSpendingCapUnlimited(parseInt(decodedSpendingCap, 10))) { return SPENDING_CAP_UNLIMITED_MSG; } const tokenPrefix = isNFT ? '#' : ''; diff --git a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.test.ts b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.test.ts index 1ca46bb20db6..4489690654d5 100644 --- a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.test.ts +++ b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.test.ts @@ -5,7 +5,7 @@ import mockState from '../../../../../../../test/data/mock-state.json'; import { renderHookWithConfirmContextProvider } from '../../../../../../../test/lib/confirmations/render-helpers'; import useTokenExchangeRate from '../../../../../../components/app/currency-input/hooks/useTokenExchangeRate'; import { useAssetDetails } from '../../../../hooks/useAssetDetails'; -import { toNonScientificString, useTokenValues } from './use-token-values'; +import { useTokenValues } from './use-token-values'; import { useDecodedTransactionData } from './useDecodedTransactionData'; jest.mock('../../../../hooks/useAssetDetails', () => ({ @@ -126,21 +126,3 @@ describe('useTokenValues', () => { }); }); }); - -describe('toNonScientificString', () => { - const TEST_CASES = [ - { scientific: 1.23e-5, expanded: '0.0000123' }, - { scientific: 1e-10, expanded: '0.0000000001' }, - { scientific: 1.23e-21, expanded: '1.23e-21' }, - ]; - - // @ts-expect-error This is missing from the Mocha type definitions - it.each(TEST_CASES)( - 'Expand $scientific to "$expanded"', - ({ scientific, expanded }: { scientific: number; expanded: string }) => { - const actual = toNonScientificString(scientific); - - expect(actual).toEqual(expanded); - }, - ); -}); diff --git a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts index 566bd1d38df1..a8dc62e5719c 100644 --- a/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts +++ b/ui/pages/confirmations/components/confirm/info/hooks/use-token-values.ts @@ -4,6 +4,7 @@ import { BigNumber } from 'bignumber.js'; import { isBoolean } from 'lodash'; import { useMemo, useState } from 'react'; import { useSelector } from 'react-redux'; +import { calcTokenAmount } from '../../../../../../../shared/lib/transactions-controller-utils'; import { Numeric } from '../../../../../../../shared/modules/Numeric'; import useTokenExchangeRate from '../../../../../../components/app/currency-input/hooks/useTokenExchangeRate'; import { getIntlLocale } from '../../../../../../ducks/locale/locale'; @@ -27,13 +28,16 @@ export const useTokenValues = (transactionMeta: TransactionMeta) => { useMemo(() => { if (!value) { return { - decodedTransferValue: 0, + decodedTransferValue: '0', isDecodedTransferValuePending: false, }; } if (!decimals) { - return { decodedTransferValue: 0, isDecodedTransferValuePending: true }; + return { + decodedTransferValue: '0', + isDecodedTransferValuePending: true, + }; } const paramIndex = value.data[0].params.findIndex( @@ -45,19 +49,19 @@ export const useTokenValues = (transactionMeta: TransactionMeta) => { ); if (paramIndex === -1) { return { - decodedTransferValue: 0, + decodedTransferValue: '0', isDecodedTransferValuePending: false, }; } return { - decodedTransferValue: new BigNumber( - value.data[0].params[paramIndex].value.toString(), - ) - .dividedBy(new BigNumber(10).pow(Number(decimals))) - .toNumber(), + decodedTransferValue: calcTokenAmount( + value.data[0].params[paramIndex].value, + decimals, + ).toFixed(), isDecodedTransferValuePending: false, }; + // }; }, [value, decimals]); const [exchangeRate, setExchangeRate] = useState(); @@ -83,18 +87,9 @@ export const useTokenValues = (transactionMeta: TransactionMeta) => { ); return { - decodedTransferValue: toNonScientificString(decodedTransferValue), + decodedTransferValue, displayTransferValue, fiatDisplayValue, pending: pending || isDecodedTransferValuePending, }; }; - -export function toNonScientificString(num: number): string { - if (num >= 10e-18) { - return num.toFixed(18).replace(/\.?0+$/u, ''); - } - - // keep in scientific notation - return num.toString(); -} diff --git a/ui/pages/confirmations/components/confirm/info/shared/native-send-heading/native-send-heading.tsx b/ui/pages/confirmations/components/confirm/info/shared/native-send-heading/native-send-heading.tsx index 9eb70a856464..486ba863f92d 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/native-send-heading/native-send-heading.tsx +++ b/ui/pages/confirmations/components/confirm/info/shared/native-send-heading/native-send-heading.tsx @@ -6,6 +6,7 @@ import { CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP, TEST_CHAINS, } from '../../../../../../../../shared/constants/network'; +import { calcTokenAmount } from '../../../../../../../../shared/lib/transactions-controller-utils'; import { AvatarToken, AvatarTokenSize, @@ -22,7 +23,6 @@ import { TextColor, TextVariant, } from '../../../../../../../helpers/constants/design-system'; -import { MIN_AMOUNT } from '../../../../../../../hooks/useCurrencyDisplay'; import { useFiatFormatter } from '../../../../../../../hooks/useFiatFormatter'; import { getPreferences, @@ -30,11 +30,7 @@ import { } from '../../../../../../../selectors'; import { getMultichainNetwork } from '../../../../../../../selectors/multichain'; import { useConfirmContext } from '../../../../../context/confirm'; -import { - formatAmount, - formatAmountMaxPrecision, -} from '../../../../simulation-details/formatAmount'; -import { toNonScientificString } from '../../hooks/use-token-values'; +import { formatAmount } from '../../../../simulation-details/formatAmount'; const NativeSendHeading = () => { const { currentConfirmation: transactionMeta } = @@ -42,9 +38,10 @@ const NativeSendHeading = () => { const { chainId } = transactionMeta; - const nativeAssetTransferValue = new BigNumber( + const nativeAssetTransferValue = calcTokenAmount( transactionMeta.txParams.value as string, - ).dividedBy(new BigNumber(10).pow(18)); + 18, + ); const conversionRate = useSelector((state) => selectConversionRateByChainId(state, chainId), @@ -66,9 +63,7 @@ const NativeSendHeading = () => { const locale = useSelector(getIntlLocale); const roundedTransferValue = formatAmount(locale, nativeAssetTransferValue); - const transferValue = toNonScientificString( - nativeAssetTransferValue.toNumber(), - ); + const transferValue = nativeAssetTransferValue.toFixed(); type TestNetChainId = (typeof TEST_CHAINS)[number]; const isTestnet = TEST_CHAINS.includes( @@ -90,8 +85,15 @@ const NativeSendHeading = () => { ); const NativeAssetAmount = - roundedTransferValue === - `<${formatAmountMaxPrecision(locale, MIN_AMOUNT)}` ? ( + roundedTransferValue === transferValue ? ( + + {`${roundedTransferValue} ${ticker}`} + + ) : ( { {`${roundedTransferValue} ${ticker}`} - ) : ( - - {`${roundedTransferValue} ${ticker}`} - ); const NativeAssetFiatConversion = Boolean(fiatDisplayValue) && diff --git a/ui/pages/confirmations/components/confirm/info/shared/send-heading/send-heading.tsx b/ui/pages/confirmations/components/confirm/info/shared/send-heading/send-heading.tsx index b44f5be93a4f..3f87b26a3b4a 100644 --- a/ui/pages/confirmations/components/confirm/info/shared/send-heading/send-heading.tsx +++ b/ui/pages/confirmations/components/confirm/info/shared/send-heading/send-heading.tsx @@ -9,7 +9,6 @@ import { Text, } from '../../../../../../../components/component-library'; import Tooltip from '../../../../../../../components/ui/tooltip'; -import { getIntlLocale } from '../../../../../../../ducks/locale/locale'; import { AlignItems, BackgroundColor, @@ -19,11 +18,9 @@ import { TextColor, TextVariant, } from '../../../../../../../helpers/constants/design-system'; -import { MIN_AMOUNT } from '../../../../../../../hooks/useCurrencyDisplay'; import { useI18nContext } from '../../../../../../../hooks/useI18nContext'; import { getPreferences } from '../../../../../../../selectors'; import { useConfirmContext } from '../../../../../context/confirm'; -import { formatAmountMaxPrecision } from '../../../../simulation-details/formatAmount'; import { useTokenValues } from '../../hooks/use-token-values'; import { useTokenDetails } from '../../hooks/useTokenDetails'; import { ConfirmLoader } from '../confirm-loader/confirm-loader'; @@ -32,7 +29,6 @@ const SendHeading = () => { const t = useI18nContext(); const { currentConfirmation: transactionMeta } = useConfirmContext(); - const locale = useSelector(getIntlLocale); const { tokenImage, tokenSymbol } = useTokenDetails(transactionMeta); const { decodedTransferValue, @@ -66,21 +62,20 @@ const SendHeading = () => { ); const TokenValue = - displayTransferValue === - `<${formatAmountMaxPrecision(locale, MIN_AMOUNT)}` ? ( - + displayTransferValue === decodedTransferValue ? ( + {`${displayTransferValue} ${tokenSymbol}`} + ) : ( + {`${displayTransferValue} ${tokenSymbol}`} - ) : ( - {`${displayTransferValue} ${tokenSymbol}`} ); const TokenFiatValue = Boolean(fiatDisplayValue) && From 17b7015c6c6673f4b41827adbda917035e2072ce Mon Sep 17 00:00:00 2001 From: Pedro Figueiredo Date: Wed, 13 Nov 2024 11:40:39 +0000 Subject: [PATCH 3/3] fix snapshots --- .../native-transfer.test.tsx.snap | 43 ------------------ .../nft-token-transfer.test.tsx.snap | 43 ------------------ .../token-transfer.test.tsx.snap | 45 +------------------ 3 files changed, 1 insertion(+), 130 deletions(-) diff --git a/ui/pages/confirmations/components/confirm/info/native-transfer/__snapshots__/native-transfer.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/native-transfer/__snapshots__/native-transfer.test.tsx.snap index 4181d12bee5c..07e0ddedf82b 100644 --- a/ui/pages/confirmations/components/confirm/info/native-transfer/__snapshots__/native-transfer.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/native-transfer/__snapshots__/native-transfer.test.tsx.snap @@ -16,49 +16,6 @@ exports[`NativeTransferInfo renders correctly 1`] = ` 0 ETH
-
- - - - - - - - - -
diff --git a/ui/pages/confirmations/components/confirm/info/nft-token-transfer/__snapshots__/nft-token-transfer.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/nft-token-transfer/__snapshots__/nft-token-transfer.test.tsx.snap index 77794c9e70a4..2d5a179b6b5c 100644 --- a/ui/pages/confirmations/components/confirm/info/nft-token-transfer/__snapshots__/nft-token-transfer.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/nft-token-transfer/__snapshots__/nft-token-transfer.test.tsx.snap @@ -17,49 +17,6 @@ exports[`NFTTokenTransferInfo renders correctly 1`] = ` class="mm-box mm-text mm-text--body-md mm-box--color-text-alternative" />
-
- - - - - - - - - -
diff --git a/ui/pages/confirmations/components/confirm/info/token-transfer/__snapshots__/token-transfer.test.tsx.snap b/ui/pages/confirmations/components/confirm/info/token-transfer/__snapshots__/token-transfer.test.tsx.snap index a76528600fb5..bb324754bd6f 100644 --- a/ui/pages/confirmations/components/confirm/info/token-transfer/__snapshots__/token-transfer.test.tsx.snap +++ b/ui/pages/confirmations/components/confirm/info/token-transfer/__snapshots__/token-transfer.test.tsx.snap @@ -3,50 +3,7 @@ exports[`TokenTransferInfo renders correctly 1`] = `
- - - - - - - - - -
-