Updated on 2026-08-14
This commit is contained in:
parent
4d08c4404d
commit
b7ea0b5d2c
5 changed files with 283 additions and 9 deletions
|
|
@ -4,6 +4,7 @@ import com.tangem.blockchain.common.Blockchain
|
|||
import com.tangem.blockchainsdk.utils.toCoinId
|
||||
import com.tangem.blockchainsdk.utils.toNetworkId
|
||||
import com.tangem.datasource.api.markets.models.response.TokenMarketInfoResponse
|
||||
import com.tangem.datasource.api.markets.models.response.TokenMarketListResponse
|
||||
import com.tangem.datasource.api.tangemTech.models.CoinsResponse
|
||||
import com.tangem.datasource.api.tangemTech.models.UserTokensResponse
|
||||
|
||||
|
|
@ -36,18 +37,48 @@ 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 { blockchain ->
|
||||
if (coinId != ETHEREUM_COIN_ID) return this
|
||||
|
||||
val networksWithL2 = networks.appendMissingL2Networks(
|
||||
networkId = { it.networkId },
|
||||
createNetwork = { networkId ->
|
||||
TokenMarketInfoResponse.Network(
|
||||
networkId = blockchain.toNetworkId(),
|
||||
networkId = networkId,
|
||||
contractAddress = null,
|
||||
decimalCount = null,
|
||||
)
|
||||
}
|
||||
this.copy(networks = networks + l2Networks)
|
||||
} else {
|
||||
this
|
||||
}
|
||||
},
|
||||
)
|
||||
return this.copy(networks = networksWithL2)
|
||||
}
|
||||
|
||||
fun TokenMarketListResponse.Token.applyL2Compatibility(): TokenMarketListResponse.Token {
|
||||
val networks = this.networks ?: return this
|
||||
if (id != ETHEREUM_COIN_ID) return this
|
||||
|
||||
val networksWithL2 = networks.appendMissingL2Networks(
|
||||
networkId = { it.networkId },
|
||||
createNetwork = { networkId ->
|
||||
TokenMarketListResponse.Token.Network(
|
||||
networkId = networkId,
|
||||
contractAddress = null,
|
||||
decimalCount = null,
|
||||
)
|
||||
},
|
||||
)
|
||||
return this.copy(networks = networksWithL2)
|
||||
}
|
||||
|
||||
private inline fun <T> List<T>.appendMissingL2Networks(
|
||||
networkId: (T) -> String,
|
||||
createNetwork: (networkId: String) -> T,
|
||||
): List<T> {
|
||||
val existingNetworkIds = mapTo(hashSetOf(), networkId)
|
||||
val missingL2Networks = l2BlockchainsList
|
||||
.map { it.toNetworkId() }
|
||||
.filterNot { it in existingNetworkIds }
|
||||
.map(createNetwork)
|
||||
return this + missingL2Networks
|
||||
}
|
||||
|
||||
fun getTokenIdIfL2Network(tokenId: String): String {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue