Skip to content

Commit d993e1b

Browse files
refactor: code optimisation for erc20
Ticket: WIN-7914
1 parent 001c662 commit d993e1b

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

modules/bitgo/src/v2/coinFactory.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ import {
3838
TaoTokenConfig,
3939
PolyxTokenConfig,
4040
JettonTokenConfig,
41+
NetworkType,
42+
BaseCoin,
4143
} from '@bitgo/statics';
4244
import {
4345
Ada,
@@ -903,8 +905,37 @@ export function getCoinConstructor(coinName: string): CoinConstructor | undefine
903905
}
904906
}
905907

908+
export const buildEthLikeChainToTestnetMap = (): Record<string, string> => {
909+
const map: Record<string, string> = {};
910+
911+
const mainnetCoinsByFamily = new Map<string, Readonly<BaseCoin>>();
912+
coins.forEach((coin) => {
913+
if (
914+
coin.network.type === NetworkType.MAINNET &&
915+
coin.features.includes(CoinFeature.SUPPORTS_ERC20) &&
916+
!coin.isToken
917+
) {
918+
mainnetCoinsByFamily.set(coin.family, coin);
919+
}
920+
});
921+
922+
// Iterate testnet coins once and lookup matching mainnet coin
923+
/* TODO: remove ip coin here, once changes are tested and add remove other evm coins from switch block (Ticket: https://bitgoinc.atlassian.net/browse/WIN-7835) */
924+
coins.forEach((coin) => {
925+
if (coin.network.type === NetworkType.TESTNET && !coin.isToken && coin.family === 'ip') {
926+
const mainnetCoin = mainnetCoinsByFamily.get(coin.family);
927+
if (mainnetCoin) {
928+
map[coin.name] = mainnetCoin.name;
929+
}
930+
}
931+
});
932+
933+
return map;
934+
};
935+
906936
// TODO: add IP token here and test changes (Ticket: https://bitgoinc.atlassian.net/browse/WIN-7835)
907-
const ethLikeChainToTestnetMap: Record<string, string> = {};
937+
const ethLikeChainToTestnetMap: Record<string, string> = buildEthLikeChainToTestnetMap();
938+
908939
export function getTokenConstructor(tokenConfig: TokenConfig): CoinConstructor | undefined {
909940
if (tokenConfig.coin in ethLikeChainToTestnetMap) {
910941
return EthLikeErc20Token.createTokenConstructor(tokenConfig as EthLikeTokenConfig, {

0 commit comments

Comments
 (0)