Skip to content

Commit 8eb3a7c

Browse files
feat(frontend): util to check if a network ID is EVM network (#5969)
# Motivation Similar to the rest, we create a small util to check if a certain network ID pertains to a EVM networks.
1 parent c824613 commit 8eb3a7c

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

src/frontend/src/env/networks/networks-evm/networks.evm.env.ts

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ export const SUPPORTED_EVM_NETWORKS: EthereumNetwork[] = EVM_NETWORKS_ENABLED
1010
? [...SUPPORTED_BASE_NETWORKS, ...SUPPORTED_BSC_NETWORKS]
1111
: [];
1212

13+
export const SUPPORTED_EVM_NETWORKS_IDS: NetworkId[] = SUPPORTED_EVM_NETWORKS.map(({ id }) => id);
14+
1315
const SUPPORTED_EVM_MAINNET_NETWORKS: Network[] = SUPPORTED_EVM_NETWORKS.filter(
1416
({ env }) => env === 'mainnet'
1517
);

src/frontend/src/lib/utils/network.utils.ts

+4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { BitcoinNetwork as SignerBitcoinNetwork } from '$declarations/signer/signer.did';
2+
import { SUPPORTED_EVM_NETWORKS_IDS } from '$env/networks/networks-evm/networks.evm.env';
23
import {
34
BTC_MAINNET_NETWORK_ID,
45
BTC_REGTEST_NETWORK_ID,
@@ -36,6 +37,9 @@ export const isNetworkIdICP: IsNetworkIdUtil = (id) => nonNullish(id) && ICP_NET
3637
export const isNetworkIdEthereum: IsNetworkIdUtil = (id) =>
3738
nonNullish(id) && SUPPORTED_ETHEREUM_NETWORKS_IDS.includes(id);
3839

40+
export const isNetworkIdEvm: IsNetworkIdUtil = (id) =>
41+
nonNullish(id) && SUPPORTED_EVM_NETWORKS_IDS.includes(id);
42+
3943
export const isNetworkIdBitcoin: IsNetworkIdUtil = (id) =>
4044
nonNullish(id) && SUPPORTED_BITCOIN_NETWORKS_IDS.includes(id);
4145

src/frontend/src/tests/lib/utils/network.utils.spec.ts

+28
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
import {
2+
BASE_NETWORK_ID,
3+
BASE_SEPOLIA_NETWORK_ID
4+
} from '$env/networks/networks-evm/networks.evm.base.env';
5+
import {
6+
BSC_NETWORK_ID,
7+
BSC_TESTNET_NETWORK_ID
8+
} from '$env/networks/networks-evm/networks.evm.bsc.env';
19
import * as btcNetworkEnv from '$env/networks/networks.btc.env';
210
import {
311
BTC_MAINNET_NETWORK,
@@ -38,6 +46,7 @@ import {
3846
isNetworkIdBTCTestnet,
3947
isNetworkIdBitcoin,
4048
isNetworkIdEthereum,
49+
isNetworkIdEvm,
4150
isNetworkIdICP,
4251
isNetworkIdSOLDevnet,
4352
isNetworkIdSOLLocal,
@@ -101,6 +110,25 @@ describe('network utils', () => {
101110
});
102111
});
103112

113+
describe('isNetworkIdEvm', () => {
114+
const allEvmNetworkIds = [
115+
BASE_NETWORK_ID,
116+
BASE_SEPOLIA_NETWORK_ID,
117+
BSC_NETWORK_ID,
118+
BSC_TESTNET_NETWORK_ID
119+
];
120+
121+
it.each(allEvmNetworkIds)('should return true for EVM network ID %s', (id) => {
122+
expect(isNetworkIdEvm(id as NetworkId)).toBe(true);
123+
});
124+
125+
it('should return false for non-EVM network IDs', () => {
126+
expect(isNetworkIdEvm(BTC_MAINNET_NETWORK_ID)).toBe(false);
127+
128+
expect(isNetworkIdEvm(ETHEREUM_NETWORK_ID)).toBe(false);
129+
});
130+
});
131+
104132
describe('isNetworkIdBitcoin', () => {
105133
const allBitcoinNetworkIds = [
106134
BTC_MAINNET_NETWORK_ID,

0 commit comments

Comments
 (0)