From 1e52ba41a0ec37ec6746cb0952e6b2b900ce38d7 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Tue, 30 Jul 2024 12:13:44 +0200 Subject: [PATCH 01/27] fix(multichain): fix showFiat option for test assets --- .../account-list-item/account-list-item.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/ui/components/multichain/account-list-item/account-list-item.js b/ui/components/multichain/account-list-item/account-list-item.js index e5fa30140668..6d77ba098737 100644 --- a/ui/components/multichain/account-list-item/account-list-item.js +++ b/ui/components/multichain/account-list-item/account-list-item.js @@ -52,12 +52,12 @@ import { getSelectedInternalAccount, } from '../../../selectors'; import { + getMultichainIsMainnet, getMultichainNativeCurrency, getMultichainNativeCurrencyImage, getMultichainNetwork, } from '../../../selectors/multichain'; import { useMultichainAccountTotalFiatBalance } from '../../../hooks/useMultichainAccountTotalFiatBalance'; -import { TEST_NETWORKS } from '../../../../shared/constants/network'; import { ConnectedStatus } from '../connected-status/connected-status'; ///: BEGIN:ONLY_INCLUDE_IF(build-mmi) import { getCustodianIconForAddress } from '../../../selectors/institutional/selectors'; @@ -91,17 +91,14 @@ export const AccountListItem = ({ useState(); const useBlockie = useSelector(getUseBlockie); - const { network: currentNetwork, isEvmNetwork } = useMultichainSelector( - getMultichainNetwork, - account, - ); + const { isEvmNetwork } = useMultichainSelector(getMultichainNetwork, account); const setAccountListItemMenuRef = (ref) => { setAccountListItemMenuElement(ref); }; + const isMainnet = useMultichainSelector(getMultichainIsMainnet, account); + const isTestnet = !isMainnet; const showFiatInTestnets = useSelector(getShowFiatInTestnets); - const showFiat = - !isEvmNetwork || - (TEST_NETWORKS.includes(currentNetwork?.nickname) && !showFiatInTestnets); + const showFiat = isMainnet || (isTestnet && showFiatInTestnets); const accountTotalFiatBalances = useMultichainAccountTotalFiatBalance(account); const mappedOrderedTokenList = accountTotalFiatBalances.orderedTokenList.map( @@ -309,9 +306,7 @@ export const AccountListItem = ({ ethNumberOfDecimals={MAXIMUM_CURRENCY_DECIMALS} value={balanceToTranslate} type={PRIMARY} - showFiat={ - !showFiat || !TEST_NETWORKS.includes(currentNetwork?.nickname) - } + showFiat={showFiat} data-testid="first-currency-display" /> From 9fb473368998348ba2efba50f3b886fe6d7f7fb0 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 12:22:56 +0200 Subject: [PATCH 02/27] feat(multichain): add getMultichainIsTestnet + use it for accout-list-item balance displays --- .../account-list-item/account-list-item.js | 6 +-- ui/selectors/multichain.test.ts | 40 +++++++++++++++++++ ui/selectors/multichain.ts | 24 +++++++++++ 3 files changed, 67 insertions(+), 3 deletions(-) diff --git a/ui/components/multichain/account-list-item/account-list-item.js b/ui/components/multichain/account-list-item/account-list-item.js index 6d77ba098737..8197a7387679 100644 --- a/ui/components/multichain/account-list-item/account-list-item.js +++ b/ui/components/multichain/account-list-item/account-list-item.js @@ -52,7 +52,7 @@ import { getSelectedInternalAccount, } from '../../../selectors'; import { - getMultichainIsMainnet, + getMultichainIsTestnet, getMultichainNativeCurrency, getMultichainNativeCurrencyImage, getMultichainNetwork, @@ -95,8 +95,8 @@ export const AccountListItem = ({ const setAccountListItemMenuRef = (ref) => { setAccountListItemMenuElement(ref); }; - const isMainnet = useMultichainSelector(getMultichainIsMainnet, account); - const isTestnet = !isMainnet; + const isTestnet = useMultichainSelector(getMultichainIsTestnet, account); + const isMainnet = !isTestnet; const showFiatInTestnets = useSelector(getShowFiatInTestnets); const showFiat = isMainnet || (isTestnet && showFiatInTestnets); const accountTotalFiatBalances = diff --git a/ui/selectors/multichain.test.ts b/ui/selectors/multichain.test.ts index d5548bf9d315..0f7de09a1d17 100644 --- a/ui/selectors/multichain.test.ts +++ b/ui/selectors/multichain.test.ts @@ -19,6 +19,7 @@ import { CHAIN_IDS, ETH_TOKEN_IMAGE_URL, MAINNET_DISPLAY_NAME, + TEST_NETWORK_IDS, } from '../../shared/constants/network'; import { MultichainNativeAssets } from '../../shared/constants/multichain/assets'; import { AccountsState } from './accounts'; @@ -37,6 +38,7 @@ import { getMultichainShouldShowFiat, getMultichainIsBitcoin, getMultichainSelectedAccountCachedBalanceIsZero, + getMultichainIsTestnet, } from './multichain'; import { getCurrentCurrency, @@ -377,6 +379,44 @@ describe('Multichain Selectors', () => { ); }); + describe('getMultichainIsTestnet', () => { + it('returns false if account is EVM (mainnet)', () => { + const state = getEvmState(); + + expect(getMultichainIsTestnet(state)).toBe(false); + }); + + // @ts-expect-error This is missing from the Mocha type definitions + it.each(TEST_NETWORK_IDS)( + 'returns true if account is EVM (testnet): %s', + (chainId: string) => { + const state = getEvmState(); + + state.metamask.providerConfig.chainId = chainId; + expect(getMultichainIsTestnet(state)).toBe(true); + }, + ); + + // @ts-expect-error This is missing from the Mocha type definitions + it.each([ + { isTestnet: false, account: MOCK_ACCOUNT_BIP122_P2WPKH }, + { isTestnet: true, account: MOCK_ACCOUNT_BIP122_P2WPKH_TESTNET }, + ])( + 'returns $isTestnet if non-EVM account address "$account.address" is compatible with mainnet', + ({ + isTestnet, + account, + }: { + isTestnet: boolean; + account: InternalAccount; + }) => { + const state = getNonEvmState(account); + + expect(getMultichainIsTestnet(state)).toBe(isTestnet); + }, + ); + }); + describe('getMultichainSelectedAccountCachedBalance', () => { it('returns cached balance if account is EVM', () => { const state = getEvmState(); diff --git a/ui/selectors/multichain.ts b/ui/selectors/multichain.ts index e171b0161009..4919a649f39d 100644 --- a/ui/selectors/multichain.ts +++ b/ui/selectors/multichain.ts @@ -25,6 +25,7 @@ import { CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP, NETWORK_TO_NAME_MAP, NETWORK_TYPES, + TEST_NETWORK_IDS, } from '../../shared/constants/network'; import { AccountsState } from './accounts'; import { @@ -347,6 +348,29 @@ export function getMultichainIsMainnet( providerConfig.chainId === MultichainNetworks.BITCOIN; } +export function getMultichainIsTestnet( + state: MultichainState, + account?: InternalAccount, +) { + // NOTE: Since there are 2 differents implementations for `IsTestnet` and `IsMainnet` we follow + // the same pattern here too! + const selectedAccount = account ?? getSelectedInternalAccount(state); + const providerConfig = getMultichainProviderConfig(state, selectedAccount); + console.log('@@ Provider', account?.address, providerConfig); + return getMultichainIsEvm(state, account) + ? // FIXME: There are multiple ways of checking for an EVM test network, but + // current implementation differ between each other. So we do not use + // `getIsTestnet` here and uses the actual `TEST_NETWORK_IDS` which seems + // more up-to-date + (TEST_NETWORK_IDS as string[]).includes( + (providerConfig as ProviderConfig).chainId, + ) + : // TODO: For now we only check for bitcoin, but we will need to + // update this for other non-EVM networks later! + (providerConfig as MultichainProviderConfig).chainId === + MultichainNetworks.BITCOIN_TESTNET; +} + export function getMultichainBalances( state: MultichainState, ): BalancesState['metamask']['balances'] { From bb7f238a051997d4668140e8a527e2b068dfb890 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 12:24:27 +0200 Subject: [PATCH 03/27] fix(multichain): use account in getMultichainIsMainnet --- ui/selectors/multichain.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/selectors/multichain.ts b/ui/selectors/multichain.ts index 4919a649f39d..ca7011be667a 100644 --- a/ui/selectors/multichain.ts +++ b/ui/selectors/multichain.ts @@ -341,7 +341,7 @@ export function getMultichainIsMainnet( ) { const selectedAccount = account ?? getSelectedInternalAccount(state); const providerConfig = getMultichainProviderConfig(state, selectedAccount); - return getMultichainIsEvm(state) + return getMultichainIsEvm(state, account) ? getIsMainnet(state) : // TODO: For now we only check for bitcoin, but we will need to // update this for other non-EVM networks later! From 44b5e49b88a4b2cda4d8cf9431a36626ab478b70 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 12:25:08 +0200 Subject: [PATCH 04/27] refactor(multichain): remove old comment --- ui/selectors/multichain.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/selectors/multichain.ts b/ui/selectors/multichain.ts index ca7011be667a..5a980e9d3795 100644 --- a/ui/selectors/multichain.ts +++ b/ui/selectors/multichain.ts @@ -205,7 +205,6 @@ export function getMultichainNetwork( // TODO: Adapt this for other non-EVM networks nickname: nonEvmNetwork.nickname, isEvmNetwork: false, - // FIXME: We should use CAIP-2 chain ID here, and not only the reference part chainId: nonEvmNetwork?.chainId, network: nonEvmNetwork, }; From 3631381408f8a14bc82675734eca2b14d2f83216 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 12:27:20 +0200 Subject: [PATCH 05/27] feat: add more missing TEST_NETWORK_IDS --- shared/constants/network.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/shared/constants/network.ts b/shared/constants/network.ts index 6f9de90f80d2..1981c6a4f8de 100644 --- a/shared/constants/network.ts +++ b/shared/constants/network.ts @@ -1012,4 +1012,13 @@ export const TEST_NETWORK_IDS = [ CHAIN_IDS.SEPOLIA, CHAIN_IDS.LINEA_GOERLI, CHAIN_IDS.LINEA_SEPOLIA, + CHAIN_IDS.ARBITRUM_GOERLI, + CHAIN_IDS.AVALANCHE_TESTNET, + CHAIN_IDS.BSC_TESTNET, + CHAIN_IDS.OPTIMISM_TESTNET, + CHAIN_IDS.POLYGON_TESTNET, + CHAIN_IDS.FANTOM_TESTNET, + CHAIN_IDS.MOONBEAM_TESTNET, + CHAIN_IDS.OPBNB_TESTNET, + CHAIN_IDS.BASE_TESTNET, ]; From 693d24a40eeee576ccde37f463b4c5128ca4512c Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 12:44:48 +0200 Subject: [PATCH 06/27] chore: remove unused logs --- ui/selectors/multichain.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/selectors/multichain.ts b/ui/selectors/multichain.ts index 5a980e9d3795..3edb9bfef588 100644 --- a/ui/selectors/multichain.ts +++ b/ui/selectors/multichain.ts @@ -355,7 +355,6 @@ export function getMultichainIsTestnet( // the same pattern here too! const selectedAccount = account ?? getSelectedInternalAccount(state); const providerConfig = getMultichainProviderConfig(state, selectedAccount); - console.log('@@ Provider', account?.address, providerConfig); return getMultichainIsEvm(state, account) ? // FIXME: There are multiple ways of checking for an EVM test network, but // current implementation differ between each other. So we do not use From 3056b77209a48d3abff649ca305fe27a522709ae Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 13:28:42 +0200 Subject: [PATCH 07/27] fix(multichain): checks for getMultichainShouldShowFiat in account-list-item --- .../multichain/account-list-item/account-list-item.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ui/components/multichain/account-list-item/account-list-item.js b/ui/components/multichain/account-list-item/account-list-item.js index 8197a7387679..a76a7c887001 100644 --- a/ui/components/multichain/account-list-item/account-list-item.js +++ b/ui/components/multichain/account-list-item/account-list-item.js @@ -56,6 +56,7 @@ import { getMultichainNativeCurrency, getMultichainNativeCurrencyImage, getMultichainNetwork, + getMultichainShouldShowFiat, } from '../../../selectors/multichain'; import { useMultichainAccountTotalFiatBalance } from '../../../hooks/useMultichainAccountTotalFiatBalance'; import { ConnectedStatus } from '../connected-status/connected-status'; @@ -97,8 +98,9 @@ export const AccountListItem = ({ }; const isTestnet = useMultichainSelector(getMultichainIsTestnet, account); const isMainnet = !isTestnet; + const shouldShowFiat = useMultichainSelector(getMultichainShouldShowFiat, account); const showFiatInTestnets = useSelector(getShowFiatInTestnets); - const showFiat = isMainnet || (isTestnet && showFiatInTestnets); + const showFiat = shouldShowFiat && (isMainnet || (isTestnet && showFiatInTestnets)); const accountTotalFiatBalances = useMultichainAccountTotalFiatBalance(account); const mappedOrderedTokenList = accountTotalFiatBalances.orderedTokenList.map( From 536ed9b3f149b0eb8de24e66ef13523b4da32729 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 13:29:07 +0200 Subject: [PATCH 08/27] fix(multichain): always use account.balance for EVM accounts --- .../multichain/account-list-item/account-list-item.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ui/components/multichain/account-list-item/account-list-item.js b/ui/components/multichain/account-list-item/account-list-item.js index a76a7c887001..95240abaad35 100644 --- a/ui/components/multichain/account-list-item/account-list-item.js +++ b/ui/components/multichain/account-list-item/account-list-item.js @@ -108,12 +108,9 @@ export const AccountListItem = ({ avatarValue: item.iconUrl, }), ); - let balanceToTranslate = isEvmNetwork - ? accountTotalFiatBalances.totalWeiBalance + const balanceToTranslate = isEvmNetwork + ? account.balance : accountTotalFiatBalances.totalBalance; - if (showFiat && isEvmNetwork) { - balanceToTranslate = account.balance; - } ///: BEGIN:ONLY_INCLUDE_IF(build-mmi) const custodianIcon = useSelector((state) => From 0f414942bb7db754b713e1cf75fc3fd34a16ba89 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 13:30:13 +0200 Subject: [PATCH 09/27] test(multichain): use mainnet provider config in account-list-item + fix tests balances and snapshots --- .../account-list-item.test.js.snap | 10 ++++++--- .../account-list-item.test.js | 22 +++++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap b/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap index ae53a1353084..c85950096e65 100644 --- a/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap +++ b/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap @@ -534,12 +534,12 @@ exports[`AccountListItem renders AccountListItem component and shows account nam
- $880.18 + $3.31 - E + ETH logo
{ }, selectedAccount: mockAccount.id, }, + providerConfig: { + type: 'mainnet', + chainId: '0x1', + ticker: 'ETH', + }, balances: { [mockNonEvmAccount.id]: { 'bip122:000000000019d6689c085ae165831e93/slip44:0': { @@ -263,7 +268,7 @@ describe('AccountListItem', () => { '[data-testid="avatar-group"]', ); - const expectedBalance = '$0.00'; + const expectedBalance = '$3.31'; expect(firstCurrencyDisplay).toBeInTheDocument(); expect(firstCurrencyDisplay.firstChild.textContent).toContain( @@ -275,9 +280,18 @@ describe('AccountListItem', () => { }); it('renders fiat for non-EVM account', () => { - const { container } = render({ - account: mockNonEvmAccount, - }); + const { container } = render( + { + account: mockNonEvmAccount, + }, + { + metamask: { + preferences: { + showFiatInTestnets: true, + }, + }, + }, + ); const firstCurrencyDisplay = container.querySelector( '[data-testid="first-currency-display"]', From 33e365d393dbd05dc58e3cf645e5f54c8ab545b1 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 13:43:07 +0200 Subject: [PATCH 10/27] test(multichain): use mainnet provider config in connect-accounts-modal + fix snapshots --- .../account-list-item/account-list-item.test.js | 10 +++++----- .../__snapshots__/connect-accounts-modal.test.tsx.snap | 6 +++++- .../connect-accounts-modal.test.tsx | 5 +++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ui/components/multichain/account-list-item/account-list-item.test.js b/ui/components/multichain/account-list-item/account-list-item.test.js index 9c52bdc7c369..147779ec4c38 100644 --- a/ui/components/multichain/account-list-item/account-list-item.test.js +++ b/ui/components/multichain/account-list-item/account-list-item.test.js @@ -48,11 +48,6 @@ const render = (props = {}, state = {}) => { }, selectedAccount: mockAccount.id, }, - providerConfig: { - type: 'mainnet', - chainId: '0x1', - ticker: 'ETH', - }, balances: { [mockNonEvmAccount.id]: { 'bip122:000000000019d6689c085ae165831e93/slip44:0': { @@ -67,6 +62,11 @@ const render = (props = {}, state = {}) => { conversionRate: '100000', }, }, + providerConfig: { + type: 'mainnet', + chainId: '0x1', + ticker: 'ETH', + }, }, activeTab: { id: 113, diff --git a/ui/components/multichain/connect-accounts-modal/__snapshots__/connect-accounts-modal.test.tsx.snap b/ui/components/multichain/connect-accounts-modal/__snapshots__/connect-accounts-modal.test.tsx.snap index f2cfb313af3a..0003823e68f1 100644 --- a/ui/components/multichain/connect-accounts-modal/__snapshots__/connect-accounts-modal.test.tsx.snap +++ b/ui/components/multichain/connect-accounts-modal/__snapshots__/connect-accounts-modal.test.tsx.snap @@ -389,7 +389,11 @@ exports[`Connect More Accounts Modal should render correctly 1`] = `
- E + ETH logo
{ balances: { [mockBtcAccount.id]: {}, }, + providerConfig: { + type: 'mainnet', + chainId: '0x1', + ticker: 'ETH', + }, }, activeTab: { id: 113, From 4eb122507632f7c5c0377b31766523b7cca9717c Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 14:38:19 +0200 Subject: [PATCH 11/27] chore: lint --- .../multichain/account-list-item/account-list-item.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ui/components/multichain/account-list-item/account-list-item.js b/ui/components/multichain/account-list-item/account-list-item.js index 95240abaad35..0538658e2785 100644 --- a/ui/components/multichain/account-list-item/account-list-item.js +++ b/ui/components/multichain/account-list-item/account-list-item.js @@ -98,9 +98,13 @@ export const AccountListItem = ({ }; const isTestnet = useMultichainSelector(getMultichainIsTestnet, account); const isMainnet = !isTestnet; - const shouldShowFiat = useMultichainSelector(getMultichainShouldShowFiat, account); + const shouldShowFiat = useMultichainSelector( + getMultichainShouldShowFiat, + account, + ); const showFiatInTestnets = useSelector(getShowFiatInTestnets); - const showFiat = shouldShowFiat && (isMainnet || (isTestnet && showFiatInTestnets)); + const showFiat = + shouldShowFiat && (isMainnet || (isTestnet && showFiatInTestnets)); const accountTotalFiatBalances = useMultichainAccountTotalFiatBalance(account); const mappedOrderedTokenList = accountTotalFiatBalances.orderedTokenList.map( From 7aa1c11302679b6338edf3449dc858285bdb4b8a Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 14:38:43 +0200 Subject: [PATCH 12/27] test: enable showFiatInTestnets in mock-state.json --- test/data/mock-state.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/data/mock-state.json b/test/data/mock-state.json index 63ae36959cdc..af14bd91320e 100644 --- a/test/data/mock-state.json +++ b/test/data/mock-state.json @@ -368,7 +368,7 @@ "hideZeroBalanceTokens": false, "isRedesignedConfirmationsDeveloperEnabled": false, "showExtensionInFullSizeView": false, - "showFiatInTestnets": false, + "showFiatInTestnets": true, "showTestNetworks": true, "smartTransactionsOptInStatus": false, "useNativeCurrencyAsPrimaryCurrency": true, From ea15201732f06804b119a321182878807b9e8c1a Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 14:42:45 +0200 Subject: [PATCH 13/27] test: no longer uses mainnet provider config for connect-accounts-modal and account-list-item tests --- .../__snapshots__/account-list-item.test.js.snap | 6 +----- .../account-list-item/account-list-item.test.js | 8 +++----- .../__snapshots__/connect-accounts-modal.test.tsx.snap | 6 +----- .../connect-accounts-modal.test.tsx | 5 ----- 4 files changed, 5 insertions(+), 20 deletions(-) diff --git a/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap b/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap index c85950096e65..1aeed8a94c10 100644 --- a/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap +++ b/ui/components/multichain/account-list-item/__snapshots__/account-list-item.test.js.snap @@ -569,11 +569,7 @@ exports[`AccountListItem renders AccountListItem component and shows account nam
- ETH logo + E
{ conversionRate: '100000', }, }, - providerConfig: { - type: 'mainnet', - chainId: '0x1', - ticker: 'ETH', - }, }, activeTab: { id: 113, @@ -215,6 +210,9 @@ describe('AccountListItem', () => { chainId: CHAIN_IDS.SEPOLIA, nickname: SEPOLIA_DISPLAY_NAME, }, + preferences: { + showFiatInTestnets: false, + }, }, }, ); diff --git a/ui/components/multichain/connect-accounts-modal/__snapshots__/connect-accounts-modal.test.tsx.snap b/ui/components/multichain/connect-accounts-modal/__snapshots__/connect-accounts-modal.test.tsx.snap index 0003823e68f1..f2cfb313af3a 100644 --- a/ui/components/multichain/connect-accounts-modal/__snapshots__/connect-accounts-modal.test.tsx.snap +++ b/ui/components/multichain/connect-accounts-modal/__snapshots__/connect-accounts-modal.test.tsx.snap @@ -389,11 +389,7 @@ exports[`Connect More Accounts Modal should render correctly 1`] = `
- ETH logo + E
{ balances: { [mockBtcAccount.id]: {}, }, - providerConfig: { - type: 'mainnet', - chainId: '0x1', - ticker: 'ETH', - }, }, activeTab: { id: 113, From abacc0241dbb93343236e4436d40d0253e3e690c Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 14:57:19 +0200 Subject: [PATCH 14/27] test: fix ui/components/multichain/pages/send state + snapshot --- test/data/mock-send-state.json | 2 +- .../multichain/pages/send/__snapshots__/send.test.js.snap | 8 +++++--- .../components/__snapshots__/your-accounts.test.tsx.snap | 4 ++-- ui/components/multichain/pages/send/send.test.js | 4 ++++ 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/test/data/mock-send-state.json b/test/data/mock-send-state.json index 5beee30824ce..e4317fe63781 100644 --- a/test/data/mock-send-state.json +++ b/test/data/mock-send-state.json @@ -132,7 +132,7 @@ "snaps": [{}], "preferences": { "hideZeroBalanceTokens": false, - "showFiatInTestnets": false, + "showFiatInTestnets": true, "showTestNetworks": true, "useNativeCurrencyAsPrimaryCurrency": true }, diff --git a/ui/components/multichain/pages/send/__snapshots__/send.test.js.snap b/ui/components/multichain/pages/send/__snapshots__/send.test.js.snap index 4db086cabbe7..572fde812657 100644 --- a/ui/components/multichain/pages/send/__snapshots__/send.test.js.snap +++ b/ui/components/multichain/pages/send/__snapshots__/send.test.js.snap @@ -467,11 +467,13 @@ exports[`SendPage render and initialization should render correctly even when a
+ > + $0.00 + @@ -500,7 +502,7 @@ exports[`SendPage render and initialization should render correctly even when a
- ? + E
- $880.18 + $537,761.36 { chainId: CHAIN_IDS.GOERLI, nickname: GOERLI_DISPLAY_NAME, type: NETWORK_TYPES.GOERLI, + ticker: 'ETH', }, }, }; From aefb46562edfe8111de775db0662f424cece8eeb Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 15:12:24 +0200 Subject: [PATCH 15/27] test: fix ui/components/multichain/pages/connections snapshot --- .../pages/connections/__snapshots__/connections.test.tsx.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/components/multichain/pages/connections/__snapshots__/connections.test.tsx.snap b/ui/components/multichain/pages/connections/__snapshots__/connections.test.tsx.snap index 606b996229c9..a0ba9780e3aa 100644 --- a/ui/components/multichain/pages/connections/__snapshots__/connections.test.tsx.snap +++ b/ui/components/multichain/pages/connections/__snapshots__/connections.test.tsx.snap @@ -293,12 +293,12 @@ exports[`Connections Content should render correctly 1`] = `
- $880.18 + $537,761.36 Date: Wed, 31 Jul 2024 16:43:23 +0200 Subject: [PATCH 16/27] test: fix ui/components/app/user-preferenced-currency-input state --- .../user-preferenced-currency-input.test.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.test.js b/ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.test.js index 88dcaa1a363e..b268f405f973 100644 --- a/ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.test.js +++ b/ui/components/app/user-preferenced-currency-input/user-preferenced-currency-input.test.js @@ -15,7 +15,18 @@ describe('UserPreferencedCurrencyInput Component', () => { useIsOriginalNativeTokenSymbol.mockReturnValue(true); describe('rendering', () => { it('should match snapshot', () => { - const mockStore = configureMockStore()(mockState); + const mockStore = configureMockStore()({ + ...mockState, + metamask: { + ...mockState.metamask, + preferences: { + ...mockState.metamask.preferences, + // This is now enabled by default in `mock-state.json`, so disable it to match + // the original behavior + showFiatInTestnets: false, + }, + }, + }); const { container } = renderWithProvider( , From 00a120d672d1d482d6aedf960ee095a38f1cd460 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 16:43:39 +0200 Subject: [PATCH 17/27] test: fix ui/components/app/user-preferenced-token-input state --- .../user-preferenced-token-input.test.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ui/components/app/user-preferenced-token-input/user-preferenced-token-input.test.js b/ui/components/app/user-preferenced-token-input/user-preferenced-token-input.test.js index b4c6387ffaef..698ce287615e 100644 --- a/ui/components/app/user-preferenced-token-input/user-preferenced-token-input.test.js +++ b/ui/components/app/user-preferenced-token-input/user-preferenced-token-input.test.js @@ -6,7 +6,18 @@ import UserPreferencedTokenInput from '.'; describe('UserPreferencedCurrencyInput Component', () => { describe('rendering', () => { - const mockStore = configureMockStore()(mockState); + const mockStore = configureMockStore()({ + ...mockState, + metamask: { + ...mockState.metamask, + preferences: { + ...mockState.metamask.preferences, + // This is now enabled by default in `mock-state.json`, so disable it to match + // the original behavior + showFiatInTestnets: false, + }, + }, + }); const props = { token: { From 8216bc2d3533e4732e0f3973526a0e444f8461be Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 16:48:32 +0200 Subject: [PATCH 18/27] test: fix ui/components/ui/token-input state --- .../ui/token-input/token-input.component.test.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ui/components/ui/token-input/token-input.component.test.js b/ui/components/ui/token-input/token-input.component.test.js index dd2f12307b76..e4cd0420c1cf 100644 --- a/ui/components/ui/token-input/token-input.component.test.js +++ b/ui/components/ui/token-input/token-input.component.test.js @@ -27,7 +27,18 @@ describe('TokenInput Component', () => { describe('Name of the group', () => { it('should render properly', () => { - const mockStore = configureMockStore()(mockState); + const mockStore = configureMockStore()({ + ...mockState, + metamask: { + ...mockState.metamask, + preferences: { + ...mockState.metamask.preferences, + // This is now enabled by default in `mock-state.json`, so disable it to match + // the original behavior + showFiatInTestnets: false, + }, + }, + }); const { container } = renderWithProvider( , From 39db59423bc74b54571f2a593e20dae4dc5e8fd9 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 16:49:51 +0200 Subject: [PATCH 19/27] test: fix ui/pages/confirmations/components/confirm/info/contract-interaction state --- .../contract-interaction/contract-interaction.test.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ui/pages/confirmations/components/confirm/info/contract-interaction/contract-interaction.test.tsx b/ui/pages/confirmations/components/confirm/info/contract-interaction/contract-interaction.test.tsx index 9657d70e274e..9f1ce6da5a79 100644 --- a/ui/pages/confirmations/components/confirm/info/contract-interaction/contract-interaction.test.tsx +++ b/ui/pages/confirmations/components/confirm/info/contract-interaction/contract-interaction.test.tsx @@ -24,6 +24,15 @@ describe('', () => { confirm: { currentConfirmation: genUnapprovedContractInteractionConfirmation(), }, + metamask: { + ...mockState.metamask, + preferences: { + ...mockState.metamask.preferences, + // This is now enabled by default in `mock-state.json`, so disable it to match + // the original behavior + showFiatInTestnets: false, + }, + }, }; const mockStore = configureMockStore(middleware)(state); From da414d12ea1169740a81a46c4ccd72d00c6b954d Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 16:51:12 +0200 Subject: [PATCH 20/27] test: fix ui/pages/confirmations/confirm-send-ether state --- .../confirm-send-ether/confirm-send-ether.test.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ui/pages/confirmations/confirm-send-ether/confirm-send-ether.test.js b/ui/pages/confirmations/confirm-send-ether/confirm-send-ether.test.js index f419cf553b07..d001260574b0 100644 --- a/ui/pages/confirmations/confirm-send-ether/confirm-send-ether.test.js +++ b/ui/pages/confirmations/confirm-send-ether/confirm-send-ether.test.js @@ -66,6 +66,10 @@ mockState.confirmTransaction = { txData: sendEther, }; +// This is now enabled by default in `mock-state.json`, so disable it to match +// the original behavior +mockState.metamask.preferences.showFiatInTestnets = false; + const store = configureStore(mockState); describe('ConfirmSendEther', () => { From a248e9e1facb50e1d11d0b7a820c67a8ee921005 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Wed, 31 Jul 2024 16:51:51 +0200 Subject: [PATCH 21/27] test: fix ui/pages/confirmations/confirmation/templates/remove-snap-account state + snapshot --- .../__snapshots__/remove-snap-account.test.js.snap | 8 +++++--- .../confirmation/templates/remove-snap-account.test.js | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ui/pages/confirmations/confirmation/templates/__snapshots__/remove-snap-account.test.js.snap b/ui/pages/confirmations/confirmation/templates/__snapshots__/remove-snap-account.test.js.snap index cc9346398cb9..bb9295752681 100644 --- a/ui/pages/confirmations/confirmation/templates/__snapshots__/remove-snap-account.test.js.snap +++ b/ui/pages/confirmations/confirmation/templates/__snapshots__/remove-snap-account.test.js.snap @@ -352,11 +352,13 @@ exports[`remove-snap-account confirmation should match snapshot 1`] = `
+ > + $537,761.36 + @@ -385,7 +387,7 @@ exports[`remove-snap-account confirmation should match snapshot 1`] = `
- ? + E
Date: Wed, 31 Jul 2024 16:53:17 +0200 Subject: [PATCH 22/27] test: add test for "Show conversion on testnets" + update snapshot for advanced-tab --- .../advanced-tab.component.test.js.snap | 12 ++++++------ .../advanced-tab/advanced-tab.component.test.js | 13 +++++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ui/pages/settings/advanced-tab/__snapshots__/advanced-tab.component.test.js.snap b/ui/pages/settings/advanced-tab/__snapshots__/advanced-tab.component.test.js.snap index 9cfdae04fd02..b8a531f0f655 100644 --- a/ui/pages/settings/advanced-tab/__snapshots__/advanced-tab.component.test.js.snap +++ b/ui/pages/settings/advanced-tab/__snapshots__/advanced-tab.component.test.js.snap @@ -231,33 +231,33 @@ exports[`AdvancedTab Component should match snapshot 1`] = ` class="settings-page__content-item-col" >
@@ -835,17 +835,17 @@ exports[`SendPageYourAccounts render renders correctly 1`] = `
- $0.00 + 0 - USD + ETH
@@ -1141,17 +1141,17 @@ exports[`SendPageYourAccounts render renders correctly 1`] = `
- $0.00 + 0 - USD + ETH
@@ -1438,17 +1438,17 @@ exports[`SendPageYourAccounts render renders correctly 1`] = `
- $0.00 + 0 - USD + ETH
@@ -1748,17 +1748,17 @@ exports[`SendPageYourAccounts render renders correctly 1`] = `
- $0.00 + 0 - USD + ETH
diff --git a/ui/components/ui/token-input/token-input.component.test.js b/ui/components/ui/token-input/token-input.component.test.js index e4cd0420c1cf..dd2f12307b76 100644 --- a/ui/components/ui/token-input/token-input.component.test.js +++ b/ui/components/ui/token-input/token-input.component.test.js @@ -27,18 +27,7 @@ describe('TokenInput Component', () => { describe('Name of the group', () => { it('should render properly', () => { - const mockStore = configureMockStore()({ - ...mockState, - metamask: { - ...mockState.metamask, - preferences: { - ...mockState.metamask.preferences, - // This is now enabled by default in `mock-state.json`, so disable it to match - // the original behavior - showFiatInTestnets: false, - }, - }, - }); + const mockStore = configureMockStore()(mockState); const { container } = renderWithProvider( , diff --git a/ui/pages/confirmations/components/confirm/info/contract-interaction/contract-interaction.test.tsx b/ui/pages/confirmations/components/confirm/info/contract-interaction/contract-interaction.test.tsx index 9f1ce6da5a79..9657d70e274e 100644 --- a/ui/pages/confirmations/components/confirm/info/contract-interaction/contract-interaction.test.tsx +++ b/ui/pages/confirmations/components/confirm/info/contract-interaction/contract-interaction.test.tsx @@ -24,15 +24,6 @@ describe('', () => { confirm: { currentConfirmation: genUnapprovedContractInteractionConfirmation(), }, - metamask: { - ...mockState.metamask, - preferences: { - ...mockState.metamask.preferences, - // This is now enabled by default in `mock-state.json`, so disable it to match - // the original behavior - showFiatInTestnets: false, - }, - }, }; const mockStore = configureMockStore(middleware)(state); diff --git a/ui/pages/confirmations/confirm-send-ether/confirm-send-ether.test.js b/ui/pages/confirmations/confirm-send-ether/confirm-send-ether.test.js index d001260574b0..f419cf553b07 100644 --- a/ui/pages/confirmations/confirm-send-ether/confirm-send-ether.test.js +++ b/ui/pages/confirmations/confirm-send-ether/confirm-send-ether.test.js @@ -66,10 +66,6 @@ mockState.confirmTransaction = { txData: sendEther, }; -// This is now enabled by default in `mock-state.json`, so disable it to match -// the original behavior -mockState.metamask.preferences.showFiatInTestnets = false; - const store = configureStore(mockState); describe('ConfirmSendEther', () => { diff --git a/ui/pages/confirmations/confirmation/templates/__snapshots__/remove-snap-account.test.js.snap b/ui/pages/confirmations/confirmation/templates/__snapshots__/remove-snap-account.test.js.snap index bb9295752681..6bb1bf046fda 100644 --- a/ui/pages/confirmations/confirmation/templates/__snapshots__/remove-snap-account.test.js.snap +++ b/ui/pages/confirmations/confirmation/templates/__snapshots__/remove-snap-account.test.js.snap @@ -352,17 +352,17 @@ exports[`remove-snap-account confirmation should match snapshot 1`] = `
- $537,761.36 + 966.988 - USD + ETH
diff --git a/ui/pages/settings/advanced-tab/__snapshots__/advanced-tab.component.test.js.snap b/ui/pages/settings/advanced-tab/__snapshots__/advanced-tab.component.test.js.snap index 041c2b632785..820aefee64f9 100644 --- a/ui/pages/settings/advanced-tab/__snapshots__/advanced-tab.component.test.js.snap +++ b/ui/pages/settings/advanced-tab/__snapshots__/advanced-tab.component.test.js.snap @@ -238,26 +238,26 @@ exports[`AdvancedTab Component should match snapshot 1`] = ` style="display: flex; width: 52px; align-items: center; justify-content: flex-start; position: relative; cursor: pointer; background-color: transparent; border: 0px; padding: 0px; user-select: none;" >
Date: Wed, 31 Jul 2024 20:18:25 +0200 Subject: [PATCH 25/27] feat(multichain): adapt logic for mainnet/testnet for getMultichainShouldShowFiat --- ui/selectors/multichain.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ui/selectors/multichain.ts b/ui/selectors/multichain.ts index 3edb9bfef588..2f25c9036b7c 100644 --- a/ui/selectors/multichain.ts +++ b/ui/selectors/multichain.ts @@ -38,6 +38,7 @@ import { getSelectedAccountCachedBalance, getSelectedInternalAccount, getShouldShowFiat, + getShowFiatInTestnets, } from '.'; export type RatesState = { @@ -311,10 +312,13 @@ export function getMultichainShouldShowFiat( state: MultichainState, account?: InternalAccount, ) { - return getMultichainIsEvm(state, account) + const selectedAccount = account ?? getSelectedInternalAccount(state); + const isTestnet = getMultichainIsTestnet(state, selectedAccount); + const isMainnet = !isTestnet; + + return getMultichainIsEvm(state, selectedAccount) ? getShouldShowFiat(state) - : // For now we force this for non-EVM - true; + : isMainnet || (isTestnet && getShowFiatInTestnets(state)); } export function getMultichainDefaultToken( From a18b2b9219fa8218b5db01732608b29e93b79f23 Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Thu, 1 Aug 2024 11:33:11 +0200 Subject: [PATCH 26/27] chore: typo in ui/selectors/multichain.ts Co-authored-by: Daniel Rocha --- ui/selectors/multichain.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/selectors/multichain.ts b/ui/selectors/multichain.ts index 2f25c9036b7c..77c4301ab7f5 100644 --- a/ui/selectors/multichain.ts +++ b/ui/selectors/multichain.ts @@ -355,7 +355,7 @@ export function getMultichainIsTestnet( state: MultichainState, account?: InternalAccount, ) { - // NOTE: Since there are 2 differents implementations for `IsTestnet` and `IsMainnet` we follow + // NOTE: Since there are 2 different implementations for `IsTestnet` and `IsMainnet` we follow // the same pattern here too! const selectedAccount = account ?? getSelectedInternalAccount(state); const providerConfig = getMultichainProviderConfig(state, selectedAccount); From 24e70a614d0b1afc785b4afd15793529ae85a6ac Mon Sep 17 00:00:00 2001 From: Charly Chevalier Date: Thu, 1 Aug 2024 11:34:29 +0200 Subject: [PATCH 27/27] refactor: revert newly added TEST_NETWORK_IDS --- shared/constants/network.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/shared/constants/network.ts b/shared/constants/network.ts index 1981c6a4f8de..6f9de90f80d2 100644 --- a/shared/constants/network.ts +++ b/shared/constants/network.ts @@ -1012,13 +1012,4 @@ export const TEST_NETWORK_IDS = [ CHAIN_IDS.SEPOLIA, CHAIN_IDS.LINEA_GOERLI, CHAIN_IDS.LINEA_SEPOLIA, - CHAIN_IDS.ARBITRUM_GOERLI, - CHAIN_IDS.AVALANCHE_TESTNET, - CHAIN_IDS.BSC_TESTNET, - CHAIN_IDS.OPTIMISM_TESTNET, - CHAIN_IDS.POLYGON_TESTNET, - CHAIN_IDS.FANTOM_TESTNET, - CHAIN_IDS.MOONBEAM_TESTNET, - CHAIN_IDS.OPBNB_TESTNET, - CHAIN_IDS.BASE_TESTNET, ];