Updated on 2026-08-14
This commit is contained in:
parent
d1c13037e0
commit
6626b53394
8 changed files with 85 additions and 53 deletions
|
|
@ -3,7 +3,7 @@ package com.tangem.data.walletconnect.network.ethereum
|
|||
import arrow.core.left
|
||||
import com.tangem.blockchain.blockchains.ethereum.EthereumTransactionExtras
|
||||
import com.tangem.blockchain.blockchains.ethereum.tokenmethods.ApprovalERC20TokenCallData
|
||||
import com.tangem.blockchain.common.Amount
|
||||
import com.tangem.blockchain.common.Amount as BlockchainAmount
|
||||
import com.tangem.blockchain.common.TransactionData
|
||||
import com.tangem.blockchain.common.transaction.Fee
|
||||
import com.tangem.blockchain.extensions.formatHex
|
||||
|
|
@ -15,7 +15,9 @@ import com.tangem.data.walletconnect.sign.SignStateConverter.toResult
|
|||
import com.tangem.data.walletconnect.sign.WcMethodUseCaseContext
|
||||
import com.tangem.data.walletconnect.utils.BlockAidVerificationDelegate
|
||||
import com.tangem.domain.core.lce.LceFlow
|
||||
import com.tangem.domain.tokens.model.Amount
|
||||
import com.tangem.domain.transaction.usecase.SendTransactionUseCase
|
||||
import com.tangem.domain.walletconnect.model.WcApprovedAmount
|
||||
import com.tangem.domain.walletconnect.model.WcEthMethod
|
||||
import com.tangem.domain.walletconnect.usecase.method.*
|
||||
import dagger.assisted.Assisted
|
||||
|
|
@ -35,7 +37,7 @@ internal class WcEthSendTransactionUseCase @AssistedInject constructor(
|
|||
WcApproval,
|
||||
WcMutableFee {
|
||||
|
||||
private var approvalAmount: Amount? = null
|
||||
private var approvalAmount: WcApprovedAmount? = null
|
||||
private var dAppFee = WcEthTxHelper.getDAppFee(
|
||||
network = context.network,
|
||||
txParams = method.transaction,
|
||||
|
|
@ -53,13 +55,19 @@ internal class WcEthSendTransactionUseCase @AssistedInject constructor(
|
|||
val amount = WcEthTxHelper.getApprovedAmount(method.transaction.data, result)
|
||||
?: return@map BlockAidTransactionCheck.Result.Plain(result)
|
||||
val tokenInfo = amount.tokenInfo
|
||||
if (!amount.isUnlimited) {
|
||||
this@WcEthSendTransactionUseCase.approvalAmount = Amount(
|
||||
currencySymbol = tokenInfo.symbol,
|
||||
decimals = tokenInfo.decimals,
|
||||
value = amount.approvedAmount,
|
||||
)
|
||||
}
|
||||
this@WcEthSendTransactionUseCase.approvalAmount = WcApprovedAmount(
|
||||
amount = if (!amount.isUnlimited) {
|
||||
Amount(
|
||||
currencySymbol = tokenInfo.symbol,
|
||||
decimals = tokenInfo.decimals,
|
||||
value = amount.approvedAmount,
|
||||
)
|
||||
} else {
|
||||
null
|
||||
},
|
||||
logoUrl = tokenInfo.logoUrl,
|
||||
chainId = tokenInfo.chainId,
|
||||
)
|
||||
BlockAidTransactionCheck.Result.Approval(
|
||||
result = result,
|
||||
approval = this,
|
||||
|
|
@ -90,7 +98,9 @@ internal class WcEthSendTransactionUseCase @AssistedInject constructor(
|
|||
val extras = uncompiled.extras as EthereumTransactionExtras
|
||||
val callData = ApprovalERC20TokenCallData(
|
||||
spenderAddress = uncompiled.sourceAddress,
|
||||
amount = action.amount,
|
||||
amount = action.amount?.amount?.let {
|
||||
BlockchainAmount(currencySymbol = it.currencySymbol, decimals = it.decimals, value = it.value)
|
||||
},
|
||||
)
|
||||
approvalAmount = action.amount
|
||||
dAppFee = null
|
||||
|
|
@ -119,11 +129,11 @@ internal class WcEthSendTransactionUseCase @AssistedInject constructor(
|
|||
emitAll(delegate.invoke(transactionData))
|
||||
}
|
||||
|
||||
override fun getAmount(): Amount? {
|
||||
override fun getAmount(): WcApprovedAmount? {
|
||||
return approvalAmount
|
||||
}
|
||||
|
||||
override fun updateAmount(amount: Amount?) {
|
||||
override fun updateAmount(amount: WcApprovedAmount?) {
|
||||
middleAction(WcEthTxAction.UpdateApprovalAmount(amount))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.tangem.data.walletconnect.network.ethereum
|
|||
import arrow.core.left
|
||||
import com.tangem.blockchain.blockchains.ethereum.EthereumTransactionExtras
|
||||
import com.tangem.blockchain.blockchains.ethereum.tokenmethods.ApprovalERC20TokenCallData
|
||||
import com.tangem.blockchain.common.Amount
|
||||
import com.tangem.blockchain.common.Amount as BlockchainAmount
|
||||
import com.tangem.blockchain.common.TransactionData
|
||||
import com.tangem.blockchain.common.transaction.Fee
|
||||
import com.tangem.blockchain.extensions.formatHex
|
||||
|
|
@ -15,13 +15,11 @@ import com.tangem.data.walletconnect.sign.SignCollector
|
|||
import com.tangem.data.walletconnect.sign.SignStateConverter.toResult
|
||||
import com.tangem.data.walletconnect.sign.WcMethodUseCaseContext
|
||||
import com.tangem.data.walletconnect.utils.BlockAidVerificationDelegate
|
||||
import com.tangem.domain.tokens.model.Amount
|
||||
import com.tangem.domain.transaction.usecase.PrepareForSendUseCase
|
||||
import com.tangem.domain.walletconnect.model.WcApprovedAmount
|
||||
import com.tangem.domain.walletconnect.model.WcEthMethod
|
||||
import com.tangem.domain.walletconnect.usecase.method.BlockAidTransactionCheck
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcApproval
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcMutableFee
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcSignState
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcTransactionUseCase
|
||||
import com.tangem.domain.walletconnect.usecase.method.*
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
|
|
@ -43,7 +41,7 @@ internal class WcEthSignTransactionUseCase @AssistedInject constructor(
|
|||
WcApproval,
|
||||
WcMutableFee {
|
||||
|
||||
private var approvalAmount: Amount? = null
|
||||
private var approvalAmount: WcApprovedAmount? = null
|
||||
private var dAppFee = WcEthTxHelper.getDAppFee(
|
||||
network = context.network,
|
||||
txParams = method.transaction,
|
||||
|
|
@ -61,10 +59,14 @@ internal class WcEthSignTransactionUseCase @AssistedInject constructor(
|
|||
?: return@map BlockAidTransactionCheck.Result.Plain(result)
|
||||
val tokenInfo = amount.tokenInfo
|
||||
if (!amount.isUnlimited) {
|
||||
approvalAmount = Amount(
|
||||
currencySymbol = tokenInfo.symbol,
|
||||
decimals = tokenInfo.decimals,
|
||||
value = amount.approvedAmount,
|
||||
approvalAmount = WcApprovedAmount(
|
||||
amount = Amount(
|
||||
currencySymbol = tokenInfo.symbol,
|
||||
decimals = tokenInfo.decimals,
|
||||
value = amount.approvedAmount,
|
||||
),
|
||||
logoUrl = tokenInfo.logoUrl,
|
||||
chainId = tokenInfo.chainId,
|
||||
)
|
||||
}
|
||||
BlockAidTransactionCheck.Result.Approval(
|
||||
|
|
@ -98,7 +100,9 @@ internal class WcEthSignTransactionUseCase @AssistedInject constructor(
|
|||
val extras = uncompiled.extras as EthereumTransactionExtras
|
||||
val callData = ApprovalERC20TokenCallData(
|
||||
spenderAddress = uncompiled.sourceAddress,
|
||||
amount = action.amount,
|
||||
amount = action.amount?.amount?.let {
|
||||
BlockchainAmount(currencySymbol = it.currencySymbol, decimals = it.decimals, value = it.value)
|
||||
},
|
||||
)
|
||||
approvalAmount = action.amount
|
||||
dAppFee = null
|
||||
|
|
@ -127,11 +131,11 @@ internal class WcEthSignTransactionUseCase @AssistedInject constructor(
|
|||
return dAppFee
|
||||
}
|
||||
|
||||
override fun getAmount(): Amount? {
|
||||
override fun getAmount(): WcApprovedAmount? {
|
||||
return approvalAmount
|
||||
}
|
||||
|
||||
override fun updateAmount(amount: Amount?) {
|
||||
override fun updateAmount(amount: WcApprovedAmount?) {
|
||||
middleAction(WcEthTxAction.UpdateApprovalAmount(amount))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import com.tangem.blockchain.extensions.hexToBigDecimal
|
|||
import com.tangem.blockchainsdk.utils.toBlockchain
|
||||
import com.tangem.common.extensions.hexToBytes
|
||||
import com.tangem.domain.models.network.Network
|
||||
import com.tangem.domain.walletconnect.model.WcApprovedAmount
|
||||
import com.tangem.domain.walletconnect.model.WcEthTransactionParams
|
||||
import java.math.BigDecimal
|
||||
|
||||
|
|
@ -81,5 +82,5 @@ internal object WcEthTxHelper {
|
|||
sealed interface WcEthTxAction {
|
||||
|
||||
data class UpdateFee(val fee: Fee) : WcEthTxAction
|
||||
data class UpdateApprovalAmount(val amount: Amount?) : WcEthTxAction
|
||||
data class UpdateApprovalAmount(val amount: WcApprovedAmount?) : WcEthTxAction
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue