diff --git a/app/src/main/assets/testnet_tokens.json b/app/src/main/assets/testnet_tokens.json index 029758adb2..e1e7139851 100644 --- a/app/src/main/assets/testnet_tokens.json +++ b/app/src/main/assets/testnet_tokens.json @@ -1,12 +1,12 @@ { "tokens" : [ { - "id" : "polygon/test", + "id" : "polygon-pos/test", "symbol" : "MATIC", "name" : "Polygon", "contracts" : [ { - "networkId" : "polygon-pos", + "networkId" : "polygon-pos/test", "address" : "0x0000000000000000000000000000000000001010", "decimalCount" : 18 } @@ -18,17 +18,17 @@ "name" : "Dai Stablecoin", "contracts" : [ { - "networkId" : "polygon-pos", + "networkId" : "polygon-pos/test", "address" : "0xcB1e72786A6eb3b44C2a2429e317c8a2462CFeb1", "decimalCount" : 18 }, { - "networkId" : "binance-smart-chain", + "networkId" : "binance-smart-chain/test", "address" : "0xec5dcb5dbf4b114c9d0f65bccab49ec54f6a0867", "decimalCount" : 18 }, { - "networkId" : "binance-smart-chain", + "networkId" : "binance-smart-chain/test", "address" : "0x8a9424745056eb399fd19a0ec26a14316684e274", "decimalCount" : 18 } @@ -40,7 +40,7 @@ "name" : "Dummy ERC20", "contracts" : [ { - "networkId" : "polygon-pos", + "networkId" : "polygon-pos/test", "address" : "0xfe4F5145f6e09952a5ba9e956ED0C25e3Fa4c7F1", "decimalCount" : 18 } @@ -52,12 +52,12 @@ "name" : "Ether", "contracts" : [ { - "networkId" : "polygon-pos", + "networkId" : "polygon-pos/test", "address" : "0x714550C2C1Ea08688607D86ed8EeF4f5E4F22323", "decimalCount" : 18 }, { - "networkId" : "binance-smart-chain", + "networkId" : "binance-smart-chain/test", "address" : "0xd66c6b4f0be8ce5b39d52e0fd1344c389929b378", "decimalCount" : 18 } @@ -69,7 +69,7 @@ "name" : "Test Token", "contracts" : [ { - "networkId" : "polygon-pos", + "networkId" : "polygon-pos/test", "address" : "0x2d7882bedcbfddce29ba99965dd3cdf7fcb10a1e", "decimalCount" : 18 } @@ -81,17 +81,17 @@ "name" : "Tether USD", "contracts" : [ { - "networkId" : "polygon-pos", + "networkId" : "polygon-pos/test", "address" : "0x3813e82e6f7098b9583FC0F33a962D02018B6803", "decimalCount" : 6 }, { - "networkId" : "binance-smart-chain", + "networkId" : "binance-smart-chain/test", "address" : "0x337610d27c682e347c9cd60bd4b3b107c9d34ddd", "decimalCount" : 18 }, { - "networkId" : "binance-smart-chain", + "networkId" : "binance-smart-chain/test", "address" : "0x7ef95a0fee0dd31b22626fa2e10ee6a223f8a684", "decimalCount" : 18 } @@ -103,7 +103,7 @@ "name" : "Wrapped Ether", "contracts" : [ { - "networkId" : "polygon-pos", + "networkId" : "polygon-pos/test", "address" : "0xA6FA4fB5f76172d178d61B04b0ecd319C5d1C0aa", "decimalCount" : 18 } @@ -115,7 +115,7 @@ "name" : "Wrapped Matic", "contracts" : [ { - "networkId" : "polygon-pos", + "networkId" : "polygon-pos/test", "address" : "0xd0A1E359811322d97991E03f863a0C30C2cF029C", "decimalCount" : 18 } @@ -135,7 +135,7 @@ "name" : "Tangem Coin A", "contracts" : [ { - "networkId" : "solana", + "networkId" : "solana/test", "address" : "22PTNbX31Zuztd6nD82fC8nQdT2hUfWv9XWXKuDkrFqR", "decimalCount" : 9 } @@ -147,14 +147,14 @@ "name" : "Tangem Coin B", "contracts" : [ { - "networkId" : "solana", + "networkId" : "solana/test", "address" : "HmSghNPg6KCk711YJA92aPejt8auyFkvmaED6jbHfUs4", "decimalCount" : 9 } ] }, { - "id" : "binance/test", + "id" : "binancecoin/test", "symbol" : "BNB", "name" : "Binance", "contracts" : [ @@ -167,14 +167,14 @@ "name" : "Hemster - 452", "contracts" : [ { - "networkId" : "binancecoin", + "networkId" : "binancecoin/test", "address" : "HEM-452", "decimalCount" : 8 } ] }, { - "id" : "bsc/test", + "id" : "binance-smart-chain/test", "symbol" : "BNB", "name" : "Bsc", "contracts" : [ @@ -187,7 +187,7 @@ "name" : "Binance-Peg BTCB Token", "contracts" : [ { - "networkId" : "binance-smart-chain", + "networkId" : "binance-smart-chain/test", "address" : "0x6ce8da28e2f864420840cf74474eff5fd80e65b8", "decimalCount" : 18 } @@ -199,7 +199,7 @@ "name" : "Binance-Peg BUSD Token", "contracts" : [ { - "networkId" : "binance-smart-chain", + "networkId" : "binance-smart-chain/test", "address" : "0xed24fc36d5ee211ea25a80239fb8c4cfd80f12ee", "decimalCount" : 18 } @@ -211,7 +211,7 @@ "name" : "Binance-Peg USDC Token", "contracts" : [ { - "networkId" : "binance-smart-chain", + "networkId" : "binance-smart-chain/test", "address" : "0x64544969ed7ebf5f083679233325356ebe738930", "decimalCount" : 18 } @@ -223,7 +223,7 @@ "name" : "Binance-Peg XRP", "contracts" : [ { - "networkId" : "binance-smart-chain", + "networkId" : "binance-smart-chain/test", "address" : "0xa83575490d7df4e2f47b7d38ef351a2722ca45b9", "decimalCount" : 18 } @@ -255,7 +255,7 @@ "name" : "Xeenus", "contracts" : [ { - "networkId" : "ethereum", + "networkId" : "ethereum/test", "address" : "0x022E292b44B5a146F2e8ee36Ff44D3dd863C915c", "decimalCount" : 18 } @@ -267,7 +267,7 @@ "name" : "Yeenus", "contracts" : [ { - "networkId" : "ethereum", + "networkId" : "ethereum/test", "address" : "0xc6fDe3FD2Cc2b173aEC24cc3f267cb3Cd78a26B7", "decimalCount" : 8 } @@ -279,7 +279,7 @@ "name" : "Zeenus", "contracts" : [ { - "networkId" : "ethereum", + "networkId" : "ethereum/test", "address" : "0x1f9061B953bBa0E36BF50F21876132DcF276fC6e", "decimalCount" : 0 } @@ -299,7 +299,7 @@ "name" : "The Fuji stablecoin", "contracts" : [ { - "networkId" : "avalanche", + "networkId" : "avalanche/test", "address" : "0x2058ec2791dD28b6f67DB836ddf87534F4Bbdf22", "decimalCount" : 6 } @@ -311,7 +311,7 @@ "name" : "To the Moon", "contracts" : [ { - "networkId" : "avalanche", + "networkId" : "avalanche/test", "address" : "0x97132C109c6816525F7f338DCb7435E1412A7668", "decimalCount" : 9 } @@ -331,7 +331,7 @@ "name" : "Fantom USD", "contracts" : [ { - "networkId" : "fantom", + "networkId" : "fantom/test", "address" : "0x91ea991bd52EE3C40EdA2509701d905e1Ee54074", "decimalCount" : 18 } @@ -343,7 +343,7 @@ "name" : "Wrapped Fantom", "contracts" : [ { - "networkId" : "fantom", + "networkId" : "fantom/test", "address" : "0xf1277d1Ed8AD466beddF92ef448A132661956621", "decimalCount" : 18 } diff --git a/app/src/main/java/com/tangem/tap/domain/tokens/CurrenciesRepository.kt b/app/src/main/java/com/tangem/tap/domain/tokens/CurrenciesRepository.kt index e7ee96d05b..c65b3159a5 100644 --- a/app/src/main/java/com/tangem/tap/domain/tokens/CurrenciesRepository.kt +++ b/app/src/main/java/com/tangem/tap/domain/tokens/CurrenciesRepository.kt @@ -152,7 +152,7 @@ class CurrenciesRepository(val context: Application) { .map { val token = it.toToken() val id = currencies - .find { it.contracts?.find { it.address == token.contractAddress } != null } + .find { it.contracts.find { it.address == token.contractAddress } != null } ?.id token.copy(id = id) } @@ -180,7 +180,7 @@ class CurrenciesRepository(val context: Application) { val fileName = if (isTestNet) "testnet_tokens" else "tokens" val json = context.assets.readJsonFileToString(fileName) return currenciesAdapter.fromJson(json)!!.tokens - .map { Currency.fromJsonObject(it, isTestNet) } + .map { Currency.fromJsonObject(it) } } private fun loadTokensJson(blockchain: Blockchain): String? { diff --git a/app/src/main/java/com/tangem/tap/domain/tokens/Currency.kt b/app/src/main/java/com/tangem/tap/domain/tokens/Currency.kt index 3bd2e57ef5..175d1e8370 100644 --- a/app/src/main/java/com/tangem/tap/domain/tokens/Currency.kt +++ b/app/src/main/java/com/tangem/tap/domain/tokens/Currency.kt @@ -26,8 +26,8 @@ data class CurrenciesFromJson( ) -fun List.toContracts(isTestNet: Boolean): List { - return mapNotNull { Contract.fromJsonObject(it, isTestNet) } +fun List.toContracts(): List { + return mapNotNull { Contract.fromJsonObject(it) } } data class Currency( @@ -39,23 +39,22 @@ data class Currency( ) { companion object { - fun fromJsonObject(currency: CurrencyFromJson, isTestNet: Boolean): Currency { + fun fromJsonObject(currency: CurrencyFromJson): Currency { return Currency( id = currency.id, name = currency.name, symbol = currency.symbol, iconUrl = getIconUrl(currency.id), - contracts = prepareListOfContracts(currency.contracts, currency.id, isTestNet) + contracts = prepareListOfContracts(currency.contracts, currency.id) ) } private fun prepareListOfContracts( contractsFromJson: List?, currencyId: String, - isTestNet: Boolean ): List { - val mainNetwork = Contract.fromCurrencyId(currencyId, isTestNet) - val contracts = contractsFromJson?.toContracts(isTestNet) ?: emptyList() + val mainNetwork = Contract.fromCurrencyId(currencyId) + val contracts = contractsFromJson?.toContracts() ?: emptyList() return (listOfNotNull(mainNetwork) + contracts).distinct() } } @@ -70,11 +69,10 @@ data class Contract( ) { companion object { - fun fromJsonObject(contract: ContractFromJson, isTestNet: Boolean): Contract? { - val networkId = if (isTestNet) contract.networkId + TESTNET else contract.networkId - val blockchain = Blockchain.fromNetworkId(networkId) ?: return null + fun fromJsonObject(contract: ContractFromJson): Contract? { + val blockchain = Blockchain.fromNetworkId(contract.networkId) ?: return null return Contract( - networkId = networkId, + networkId = contract.networkId, blockchain = blockchain, address = contract.address, decimalCount = contract.decimalCount, @@ -82,19 +80,17 @@ data class Contract( ) } - fun fromCurrencyId(currencyId: String, isTestNet: Boolean): Contract? { - val networkId = if (isTestNet) currencyId + TESTNET else currencyId - val blockchain = Blockchain.fromNetworkId(networkId) ?: return null + fun fromCurrencyId(currencyId: String): Contract? { + val blockchain = Blockchain.fromNetworkId(currencyId) ?: return null return Contract( - networkId = networkId, + networkId = currencyId, blockchain = blockchain, address = blockchain.currency, decimalCount = blockchain.decimals(), - iconUrl = getIconUrl(networkId) + iconUrl = getIconUrl(currencyId) ) } - const val TESTNET = "-testnet" } } diff --git a/domain/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt b/domain/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt index 54def43015..cb2bc7c822 100644 --- a/domain/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt +++ b/domain/src/main/java/com/tangem/domain/common/extensions/Blockchain.kt @@ -5,30 +5,30 @@ import com.tangem.blockchain.common.Blockchain fun Blockchain.Companion.fromNetworkId(networkId: String): Blockchain? { return when (networkId) { "avalanche", "avalanche-2" -> Blockchain.Avalanche - "avalanche-testnet", "avalanche-2-testnet" -> Blockchain.AvalancheTestnet + "avalanche/test", "avalanche-2/test" -> Blockchain.AvalancheTestnet "binancecoin" -> Blockchain.Binance - "binancecoin-testnet" -> Blockchain.BinanceTestnet + "binancecoin/test" -> Blockchain.BinanceTestnet "binance-smart-chain" -> Blockchain.BSC - "binance-smart-chain-testnet" -> Blockchain.BSCTestnet + "binance-smart-chain/test" -> Blockchain.BSCTestnet "ethereum" -> Blockchain.Ethereum - "ethereum-testnet" -> Blockchain.EthereumTestnet + "ethereum/test" -> Blockchain.EthereumTestnet "polygon-pos" -> Blockchain.Polygon - "polygon-pos-testnet" -> Blockchain.PolygonTestnet + "polygon-pos/test" -> Blockchain.PolygonTestnet "solana" -> Blockchain.Solana - "solana-testnet" -> Blockchain.SolanaTestnet + "solana/test" -> Blockchain.SolanaTestnet "fantom" -> Blockchain.Fantom - "fantom-testnet" -> Blockchain.FantomTestnet + "fantom/test" -> Blockchain.FantomTestnet "bitcoin" -> Blockchain.Bitcoin - "bitcoin-testnet" -> Blockchain.BitcoinTestnet + "bitcoin/test" -> Blockchain.BitcoinTestnet "bitcoin-cash" -> Blockchain.BitcoinCash - "bitcoin-cash-testnet" -> Blockchain.BitcoinCashTestnet + "bitcoin-cash/test" -> Blockchain.BitcoinCashTestnet "cardano" -> Blockchain.CardanoShelley "dogecoin" -> Blockchain.Dogecoin "ducatus" -> Blockchain.Ducatus "litecoin" -> Blockchain.Litecoin "rsk" -> Blockchain.RSK "stellar" -> Blockchain.Stellar - "stellar-testnet" -> Blockchain.StellarTestnet + "stellar/test" -> Blockchain.StellarTestnet "tezos" -> Blockchain.Tezos "ripple" -> Blockchain.XRP else -> null @@ -39,31 +39,31 @@ fun Blockchain.toNetworkId(): String { return when (this) { Blockchain.Unknown -> "unknown" Blockchain.Avalanche -> "avalanche" - Blockchain.AvalancheTestnet -> "avalanche-testnet" + Blockchain.AvalancheTestnet -> "avalanche/test" Blockchain.Binance -> "binancecoin" - Blockchain.BinanceTestnet -> "binancecoin-testnet" + Blockchain.BinanceTestnet -> "binancecoin/test" Blockchain.BSC -> "binance-smart-chain" - Blockchain.BSCTestnet -> "binance-smart-chain-testnet" + Blockchain.BSCTestnet -> "binance-smart-chain/test" Blockchain.Bitcoin -> "bitcoin" - Blockchain.BitcoinTestnet -> "bitcoin-testnet" + Blockchain.BitcoinTestnet -> "bitcoin/test" Blockchain.BitcoinCash -> "bitcoin-cash" - Blockchain.BitcoinCashTestnet -> "bitcoin-cash-testnet" + Blockchain.BitcoinCashTestnet -> "bitcoin-cash/test" Blockchain.Cardano -> "cardano" Blockchain.CardanoShelley -> "cardano" Blockchain.Dogecoin -> "dogecoin" Blockchain.Ducatus -> "ducatus" Blockchain.Ethereum -> "ethereum" - Blockchain.EthereumTestnet -> "ethereum-testnet" + Blockchain.EthereumTestnet -> "ethereum/test" Blockchain.Fantom -> "fantom" - Blockchain.FantomTestnet -> "fantom-testnet" + Blockchain.FantomTestnet -> "fantom/test" Blockchain.Litecoin -> "litecoin" Blockchain.Polygon -> "matic-network" - Blockchain.PolygonTestnet -> "matic-networks-testnet" + Blockchain.PolygonTestnet -> "matic-networks/test" Blockchain.RSK -> "rootstock" Blockchain.Stellar -> "stellar" - Blockchain.StellarTestnet -> "stellar-testnet" + Blockchain.StellarTestnet -> "stellar/test" Blockchain.Solana -> "solana" - Blockchain.SolanaTestnet -> "solana-testnet" + Blockchain.SolanaTestnet -> "solana/test" Blockchain.Tezos -> "tezos" Blockchain.XRP -> "ripple" }