Updated on 2026-08-14

This commit is contained in:
Tangem 2020-05-12 14:50:22 +00:00
commit ed344f492c
3 changed files with 16 additions and 9 deletions

View file

@ -5,6 +5,7 @@ import com.tangem.blockchain.blockchains.binance.client.domain.broadcast.Transfe
import com.tangem.blockchain.blockchains.binance.client.encoding.message.MessageType
import com.tangem.blockchain.blockchains.binance.client.encoding.message.TransactionRequestAssemblerExtSign
import com.tangem.blockchain.blockchains.binance.client.encoding.message.TransferMessage
import com.tangem.blockchain.common.AmountType
import com.tangem.blockchain.common.Blockchain
import com.tangem.blockchain.common.TransactionData
import com.tangem.blockchain.extensions.Result
@ -28,13 +29,14 @@ class BinanceTransactionBuilder(
private var transferMessage: TransferMessage? = null
fun buildToSign(transactionData: TransactionData): Result<ByteArray> {
val amount = transactionData.amount
if (!transactionData.amount.isAboveZero()) return Result.Failure(Exception("Transaction amount is not defined"))
if (!amount.isAboveZero()) return Result.Failure(Exception("Transaction amount is not defined"))
val accountNumber = accountNumber ?: return Result.Failure(Exception("No account number"))
val sequence = sequence ?: return Result.Failure(Exception("No sequence"))
val transfer = Transfer()
transfer.coin = transactionData.amount.currencySymbol
transfer.coin = if (amount.type == AmountType.Coin) amount.currencySymbol else amount.address
transfer.fromAddress = transactionData.sourceAddress
transfer.toAddress = transactionData.destinationAddress
transfer.amount = transactionData.amount.value!!

View file

@ -1,12 +1,12 @@
package com.tangem.blockchain.blockchains.binance
import android.util.Log
import com.tangem.blockchain.blockchains.binance.network.BinanceInfoResponse
import com.tangem.blockchain.blockchains.binance.network.BinanceNetworkManager
import com.tangem.blockchain.common.*
import com.tangem.blockchain.extensions.Result
import com.tangem.blockchain.extensions.SimpleResult
import com.tangem.common.CompletionResult
import com.tangem.blockchain.blockchains.binance.network.BinanceInfoResponse
class BinanceWalletManager(
cardId: String,
@ -18,7 +18,7 @@ class BinanceWalletManager(
private val blockchain = wallet.blockchain
override suspend fun update() {
val result = networkManager.getInfo(wallet.address)
val result = networkManager.getInfo(wallet.address, wallet.amounts[AmountType.Token]?.address)
when (result) {
is Result.Success -> updateWallet(result.data)
is Result.Failure -> updateError(result.error)
@ -28,6 +28,7 @@ class BinanceWalletManager(
private fun updateWallet(response: BinanceInfoResponse) {
Log.d(this::class.java.simpleName, "Balance is ${response.balance}")
wallet.amounts[AmountType.Coin]?.value = response.balance
wallet.amounts[AmountType.Token]?.value = response.assetBalance
transactionBuilder.accountNumber = response.accountNumber
transactionBuilder.sequence = response.sequence

View file

@ -25,20 +25,22 @@ class BinanceNetworkManager(isTestNet: Boolean = false) {
)
}
suspend fun getInfo(address: String): Result<BinanceInfoResponse> {
suspend fun getInfo(address: String, assetCode: String? = null): Result<BinanceInfoResponse> {
return try {
val accountData = retryIO { client.getAccount(address) }
var coinBalance = BigDecimal.ZERO
var assetBalance = BigDecimal.ZERO
for (balance in accountData.balances) {
if (balance.symbol == "BNB") {
coinBalance = balance.free.toBigDecimal()
break
when (balance.symbol) {
"BNB" -> coinBalance = balance.free.toBigDecimal()
assetCode -> assetBalance = balance.free.toBigDecimal()
}
}
Result.Success(BinanceInfoResponse(
balance = coinBalance,
assetBalance = assetBalance,
accountNumber = accountData.accountNumber.toLong(),
sequence = accountData.sequence
))
@ -46,6 +48,7 @@ class BinanceNetworkManager(isTestNet: Boolean = false) {
if (exception.message == "account not found") {
Result.Success(BinanceInfoResponse(
balance = BigDecimal.ZERO, //TODO check account not found logic
assetBalance = null,
accountNumber = null,
sequence = null
))
@ -88,7 +91,8 @@ class BinanceNetworkManager(isTestNet: Boolean = false) {
}
data class BinanceInfoResponse(
val balance: BigDecimal?,
val balance: BigDecimal,
val assetBalance: BigDecimal?,
val accountNumber: Long?,
val sequence: Long?
)