diff --git a/app/src/main/java/com/tangem/wallet/tokenEmv/TokenEmvEngine.kt b/app/src/main/java/com/tangem/wallet/tokenEmv/TokenEmvEngine.kt index 0997a06cbf..ef083c5d2d 100644 --- a/app/src/main/java/com/tangem/wallet/tokenEmv/TokenEmvEngine.kt +++ b/app/src/main/java/com/tangem/wallet/tokenEmv/TokenEmvEngine.kt @@ -235,61 +235,30 @@ class TokenEmvEngine : TokenEngine { val responseListener: ServerApiInfura.ResponseListener = object : ServerApiInfura.ResponseListener { override fun onSuccess(method: String, infuraResponse: InfuraResponse) { - when (method) { - ServerApiInfura.INFURA_ETH_GET_TRANSACTION_COUNT -> { - var nonce = infuraResponse.result - nonce = nonce!!.substring(2) - val count = BigInteger(nonce, 16) - coinData.confirmedTXCount = count - if (serverApiInfura.isRequestsSequenceCompleted) { //getting balances after checking for pending to avoid showing old balance as verified - serverApiInfura.requestData(ServerApiInfura.INFURA_ETH_CALL, 67, coinData.wallet, getContractAddress(ctx.card), "") - } - } - ServerApiInfura.INFURA_ETH_GET_PENDING_COUNT -> { - var pending = infuraResponse.result - pending = pending!!.substring(2) - val count = BigInteger(pending, 16) - coinData.unconfirmedTXCount = count - if (serverApiInfura.isRequestsSequenceCompleted) { //getting balances after checking for pending to avoid showing old balance as verified - serverApiInfura.requestData(ServerApiInfura.INFURA_ETH_CALL, 67, coinData.wallet, getContractAddress(ctx.card), "") - } - } - ServerApiInfura.INFURA_ETH_CALL -> { - try { - var balanceCap = infuraResponse.result - balanceCap = balanceCap!!.substring(2) - val l = BigInteger(balanceCap, 16) - coinData.balanceInInternalUnits = InternalAmount(l, ctx.card.tokenSymbol) - coinData.isBalanceReceived = true - // Log.i("$TAG eth_call", balanceCap) - } catch (e: java.lang.Exception) { - e.printStackTrace() - } - } - } - if (serverApiInfura.isRequestsSequenceCompleted) { - blockchainRequestsCallbacks.onComplete(!ctx.hasError()) - } else { - blockchainRequestsCallbacks.onProgress() + try { + var balanceCap = infuraResponse.result + balanceCap = balanceCap!!.substring(2) + val l = BigInteger(balanceCap, 16) + coinData.balanceInInternalUnits = InternalAmount(l, ctx.card.tokenSymbol) + coinData.isBalanceReceived = true + // Log.i("$TAG eth_call", balanceCap) + } catch (e: java.lang.Exception) { + onFail(method, e.message ?: "invalid response") } + blockchainRequestsCallbacks.onComplete(true) } override fun onFail(method: String, message: String) { Log.e(TAG, "onFail: $method $message") ctx.error = message - if (serverApiInfura.isRequestsSequenceCompleted) { - blockchainRequestsCallbacks.onComplete(false) - } else { - blockchainRequestsCallbacks.onProgress() - } + blockchainRequestsCallbacks.onComplete(false) } } serverApiInfura.setResponseListener(responseListener) if (validateAddress(getContractAddress(ctx.card))) { - serverApiInfura.requestData(ServerApiInfura.INFURA_ETH_GET_TRANSACTION_COUNT, 67, coinData.wallet, "", "") - serverApiInfura.requestData(ServerApiInfura.INFURA_ETH_GET_PENDING_COUNT, 67, coinData.wallet, "", "") + serverApiInfura.requestData(ServerApiInfura.INFURA_ETH_CALL, 67, coinData.wallet, getContractAddress(ctx.card), "") } else { ctx.error = "Smart contract address not defined" blockchainRequestsCallbacks.onComplete(false) @@ -368,5 +337,8 @@ class TokenEmvEngine : TokenEngine { return false } + override fun pendingTransactionTimeoutInSeconds(): Int { + return 60 + } } \ No newline at end of file