diff --git a/src/frontend/src/env/networks/networks-evm/networks.evm.env.ts b/src/frontend/src/env/networks/networks-evm/networks.evm.env.ts index 39a894180eb..c912446676e 100644 --- a/src/frontend/src/env/networks/networks-evm/networks.evm.env.ts +++ b/src/frontend/src/env/networks/networks-evm/networks.evm.env.ts @@ -10,6 +10,8 @@ export const SUPPORTED_EVM_NETWORKS: EthereumNetwork[] = EVM_NETWORKS_ENABLED ? [...SUPPORTED_BASE_NETWORKS, ...SUPPORTED_BSC_NETWORKS] : []; +export const SUPPORTED_EVM_NETWORKS_IDS: NetworkId[] = SUPPORTED_EVM_NETWORKS.map(({ id }) => id); + const SUPPORTED_EVM_MAINNET_NETWORKS: Network[] = SUPPORTED_EVM_NETWORKS.filter( ({ env }) => env === 'mainnet' ); diff --git a/src/frontend/src/lib/utils/network.utils.ts b/src/frontend/src/lib/utils/network.utils.ts index bbb99bb12c1..970e7722140 100644 --- a/src/frontend/src/lib/utils/network.utils.ts +++ b/src/frontend/src/lib/utils/network.utils.ts @@ -1,4 +1,5 @@ import type { BitcoinNetwork as SignerBitcoinNetwork } from '$declarations/signer/signer.did'; +import { SUPPORTED_EVM_NETWORKS_IDS } from '$env/networks/networks-evm/networks.evm.env'; import { BTC_MAINNET_NETWORK_ID, BTC_REGTEST_NETWORK_ID, @@ -36,6 +37,9 @@ export const isNetworkIdICP: IsNetworkIdUtil = (id) => nonNullish(id) && ICP_NET export const isNetworkIdEthereum: IsNetworkIdUtil = (id) => nonNullish(id) && SUPPORTED_ETHEREUM_NETWORKS_IDS.includes(id); +export const isNetworkIdEvm: IsNetworkIdUtil = (id) => + nonNullish(id) && SUPPORTED_EVM_NETWORKS_IDS.includes(id); + export const isNetworkIdBitcoin: IsNetworkIdUtil = (id) => nonNullish(id) && SUPPORTED_BITCOIN_NETWORKS_IDS.includes(id); diff --git a/src/frontend/src/tests/lib/utils/network.utils.spec.ts b/src/frontend/src/tests/lib/utils/network.utils.spec.ts index a4a32c8a6ea..4ab68b708dd 100644 --- a/src/frontend/src/tests/lib/utils/network.utils.spec.ts +++ b/src/frontend/src/tests/lib/utils/network.utils.spec.ts @@ -1,3 +1,11 @@ +import { + BASE_NETWORK_ID, + BASE_SEPOLIA_NETWORK_ID +} from '$env/networks/networks-evm/networks.evm.base.env'; +import { + BSC_NETWORK_ID, + BSC_TESTNET_NETWORK_ID +} from '$env/networks/networks-evm/networks.evm.bsc.env'; import * as btcNetworkEnv from '$env/networks/networks.btc.env'; import { BTC_MAINNET_NETWORK, @@ -38,6 +46,7 @@ import { isNetworkIdBTCTestnet, isNetworkIdBitcoin, isNetworkIdEthereum, + isNetworkIdEvm, isNetworkIdICP, isNetworkIdSOLDevnet, isNetworkIdSOLLocal, @@ -101,6 +110,25 @@ describe('network utils', () => { }); }); + describe('isNetworkIdEvm', () => { + const allEvmNetworkIds = [ + BASE_NETWORK_ID, + BASE_SEPOLIA_NETWORK_ID, + BSC_NETWORK_ID, + BSC_TESTNET_NETWORK_ID + ]; + + it.each(allEvmNetworkIds)('should return true for EVM network ID %s', (id) => { + expect(isNetworkIdEvm(id as NetworkId)).toBe(true); + }); + + it('should return false for non-EVM network IDs', () => { + expect(isNetworkIdEvm(BTC_MAINNET_NETWORK_ID)).toBe(false); + + expect(isNetworkIdEvm(ETHEREUM_NETWORK_ID)).toBe(false); + }); + }); + describe('isNetworkIdBitcoin', () => { const allBitcoinNetworkIds = [ BTC_MAINNET_NETWORK_ID,