Updated on 2026-08-14

This commit is contained in:
Tangem 2025-10-09 13:06:54 +03:00
commit aa10ef1182
1206 changed files with 26404 additions and 12548 deletions

View file

@ -23,9 +23,9 @@ fun getL2CompatibilityTokenComparison(token: UserTokensResponse.Token, currencyI
fun List<CoinsResponse.Coin.Network>.applyL2Compatibility(coinId: String): List<CoinsResponse.Coin.Network> {
return if (coinId == ETHEREUM_COIN_ID) {
val l2Networks = l2BlockchainsList.map {
val l2Networks = l2BlockchainsList.map { blockchain ->
CoinsResponse.Coin.Network(
networkId = it.toNetworkId(),
networkId = blockchain.toNetworkId(),
)
}
this + l2Networks
@ -37,9 +37,9 @@ fun List<CoinsResponse.Coin.Network>.applyL2Compatibility(coinId: String): List<
fun TokenMarketInfoResponse.applyL2Compatibility(coinId: String): TokenMarketInfoResponse {
val networks = this.networks ?: return this
return if (coinId == ETHEREUM_COIN_ID) {
val l2Networks = l2BlockchainsList.map {
val l2Networks = l2BlockchainsList.map { blockchain ->
TokenMarketInfoResponse.Network(
networkId = it.toNetworkId(),
networkId = blockchain.toNetworkId(),
contractAddress = null,
decimalCount = null,
)

View file

@ -37,8 +37,8 @@ internal class BlockchainProvidersResponseLoader @Inject constructor(
remote = remoteResponse,
)
},
onFailure = {
Timber.e(it, "Failed to load blockchain provider types from backend")
onFailure = { throwable ->
Timber.e(throwable, "Failed to load blockchain provider types from backend")
localResponse
},
)

View file

@ -30,8 +30,8 @@ internal class BlockchainProvidersResponseMerger @Inject internal constructor(
*/
fun merge(local: BlockchainProvidersResponse, remote: BlockchainProvidersResponse): BlockchainProvidersResponse {
val remoteWithoutInvalidProviders = remote
.mapValues {
it.value
.mapValues { entry ->
entry.value
.filterUnsupportedProviders()
.filterInvalidProviders()
}

View file

@ -52,10 +52,10 @@ internal class DevBlockchainProvidersTypesManager(
}
override suspend fun update(blockchain: Blockchain, providers: List<ProviderType>) {
changedBlockchainProvidersStore.updateData {
changedBlockchainProvidersStore.updateData { blockchainProviders ->
val providerModels = BlockchainProviderTypesConverter.convertBack(value = mapOf(blockchain to providers))
it + providerModels
blockchainProviders + providerModels
}
}

View file

@ -11,6 +11,7 @@ internal enum class ProviderTypeIdMapping(val id: String, val providerType: Prov
BitcoinBlockcypher(id = "blockcypher", providerType = ProviderType.BitcoinLike.Blockcypher),
CardanoAdalite(id = "adalite", providerType = ProviderType.Cardano.Adalite),
CardanoRosetta(id = "tangemRosetta", providerType = ProviderType.Cardano.Rosetta),
CardanoMock(id = "mock", providerType = ProviderType.Mock),
ChiaFireAcademy(id = "fireAcademy", providerType = ProviderType.Chia.FireAcademy),
ChiaTangem(id = "tangemChia", providerType = ProviderType.Chia.Tangem),
ChiaTangemNew(id = "tangemChia3", providerType = ProviderType.Chia.TangemNew),
@ -26,5 +27,4 @@ internal enum class ProviderTypeIdMapping(val id: String, val providerType: Prov
AlephiumTangem(id = "tangemAlephium", providerType = ProviderType.Alephium.Tangem),
Blink(id = "blink", providerType = ProviderType.Blink),
Tatum(id = "tatum", providerType = ProviderType.Kusama.Tatum),
;
}

View file

@ -167,6 +167,8 @@ fun Blockchain.Companion.fromNetworkId(networkId: String): Blockchain? {
"pepecoin/test" -> Blockchain.PepecoinTestnet
"hyperevm" -> Blockchain.Hyperliquid
"hyperevm/test" -> Blockchain.HyperliquidTestnet
"quai-network" -> Blockchain.Quai
"quai-network/test" -> Blockchain.QuaiTestnet
else -> null
}
}
@ -331,6 +333,8 @@ fun Blockchain.toNetworkId(): String {
Blockchain.PepecoinTestnet -> "pepecoin/test"
Blockchain.Hyperliquid -> "hyperevm"
Blockchain.HyperliquidTestnet -> "hyperevm/test"
Blockchain.Quai -> "quai-network"
Blockchain.QuaiTestnet -> "quai-network/test"
}
}
@ -435,6 +439,7 @@ fun Blockchain.toCoinId(): String {
Blockchain.ZkLinkNova, Blockchain.ZkLinkNovaTestnet -> "zklink-ethereum"
Blockchain.Pepecoin, Blockchain.PepecoinTestnet -> "pepecoin-network"
Blockchain.Hyperliquid, Blockchain.HyperliquidTestnet -> "hyperliquid"
Blockchain.Quai, Blockchain.QuaiTestnet -> "quai-network"
}
}

View file

@ -21,6 +21,7 @@ import java.math.BigDecimal
object BlockchainUtils {
private const val XRP_X_ADDRESS = 'X'
const val SOLANA_TRANSACTION_SIZE_THRESHOLD_BYTES = 930
/** Decodes XRP Blockchain address */
fun decodeRippleXAddress(xAddress: String, blockchainId: String): XrpTaggedAddress? {