From 803eaa05bc86c74a4ebd0d4f4731ff6312335054 Mon Sep 17 00:00:00 2001 From: furenster <123000419+furenster@users.noreply.github.com> Date: Fri, 14 Feb 2025 20:08:19 -0800 Subject: [PATCH] Unable to fetch token information (TRON TRC20 token) Closed #150 --- .../blockchain/clients/tron/TronGetTokenClient.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/blockchain/src/main/java/com/gemwallet/android/blockchain/clients/tron/TronGetTokenClient.kt b/blockchain/src/main/java/com/gemwallet/android/blockchain/clients/tron/TronGetTokenClient.kt index 34b7ef3e..2033bce4 100644 --- a/blockchain/src/main/java/com/gemwallet/android/blockchain/clients/tron/TronGetTokenClient.kt +++ b/blockchain/src/main/java/com/gemwallet/android/blockchain/clients/tron/TronGetTokenClient.kt @@ -22,12 +22,14 @@ class TronGetTokenClient( private val rpcClient: TronRpcClient, ) : GetTokenClient { override suspend fun getTokenData(tokenId: String): Asset? = withContext(Dispatchers.IO) { - if (!AnyAddress.isValid(tokenId, WCChainTypeProxy().invoke(chain))) { + val coinType = WCChainTypeProxy().invoke(chain) + if (!AnyAddress.isValid(tokenId, coinType)) { return@withContext null } - val getName = async { getName(tokenId) } - val getSymbol = async { getSymbol(tokenId) } - val getDecimals = async { getDecimals(tokenId) } + val contract = AnyAddress(tokenId, coinType).description() + val getName = async { getName(contract) } + val getSymbol = async { getSymbol(contract) } + val getDecimals = async { getDecimals(contract) } val name = getName.await() ?: return@withContext null val symbol = getSymbol.await() ?: return@withContext null val decimals = getDecimals.await() ?: return@withContext null @@ -65,8 +67,9 @@ class TronGetTokenClient( } private suspend fun smartContractCallFunction(contract: String, function: String): String? { + val contract = "41" + Base58.decode(contract).toHexString("").drop(2) val result = rpcClient.triggerSmartContract( - contractAddress = "41" + Base58.decode(contract).toHexString("").drop(2), + contractAddress = contract, functionSelector = function, parameter = null, feeLimit = null,