Skip to content

Commit

Permalink
Fix estimation; add get tx receipt call (#1986)
Browse files Browse the repository at this point in the history
  • Loading branch information
elgatovital authored Aug 25, 2023
1 parent e2971de commit 3822c97
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,6 @@ class TxReviewFragment : BaseViewBindingFragment<FragmentTxReviewBinding>() {

if (!viewModel.isInitialized()) {
viewModel.setTxData(
txInfo = txDetails!!.txInfo,
txData = txDetails!!.txData!!,
executionInfo = txDetails!!.detailedExecutionInfo!!
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import io.gnosis.safe.ui.base.BaseStateViewModel.ViewAction.Loading
import io.gnosis.safe.ui.settings.app.SettingsHandler
import io.gnosis.safe.ui.settings.owner.list.OwnerViewData
import io.gnosis.safe.ui.transactions.details.SigningMode
import io.gnosis.safe.ui.transactions.details.viewdata.TransactionInfoViewData
import io.gnosis.safe.utils.BalanceFormatter
import io.gnosis.safe.utils.convertAmount
import pm.gnosis.crypto.ECDSASignature
Expand Down Expand Up @@ -67,8 +66,6 @@ class TxReviewViewModel
var maxFeePerGas: BigDecimal? = null
private set

private var txInfo: TransactionInfoViewData? = null

private var txData: TxData? = null

private var executionInfo: DetailedExecutionInfo? = null
Expand All @@ -88,8 +85,7 @@ class TxReviewViewModel

override fun initialState() = TxReviewState(viewAction = null)

fun setTxData(txInfo: TransactionInfoViewData, txData: TxData, executionInfo: DetailedExecutionInfo) {
this.txInfo = txInfo
fun setTxData(txData: TxData, executionInfo: DetailedExecutionInfo) {
this.txData = txData
this.executionInfo = executionInfo
loadDefaultKey()
Expand Down Expand Up @@ -197,14 +193,8 @@ class TxReviewViewModel

kotlin.runCatching {

val toAddress = when (txInfo) {
is TransactionInfoViewData.Transfer -> (txInfo as TransactionInfoViewData.Transfer).address
else -> txData!!.to.value
}

ethTx = rpcClient.ethTransaction(
activeSafe,
toAddress,
it.address,
txData!!,
executionInfo as DetailedExecutionInfo.MultisigExecutionDetails
Expand Down
16 changes: 11 additions & 5 deletions data/src/main/java/io/gnosis/data/backend/rpc/RpcClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import pm.gnosis.ethereum.EthEstimateGasEip1559
import pm.gnosis.ethereum.EthGasPrice
import pm.gnosis.ethereum.EthGetTransactionCount
import pm.gnosis.ethereum.EthereumRepository
import pm.gnosis.ethereum.models.TransactionReceipt
import pm.gnosis.model.Solidity
import pm.gnosis.models.Transaction
import pm.gnosis.models.Wei
Expand Down Expand Up @@ -167,7 +168,6 @@ class RpcClient(

fun ethTransaction(
safe: Safe,
toAddress: Solidity.Address,
executionKey: Solidity.Address,
txData: TxData,
executionInfo: DetailedExecutionInfo.MultisigExecutionDetails
Expand All @@ -176,13 +176,13 @@ class RpcClient(
Transaction.Eip1559(
chainId = safe.chain.chainId,
from = executionKey,
to = toAddress,
to = safe.address,
data = ethTxInput(safe, txData, executionInfo)
)
} else {
Transaction.Legacy(
chainId = safe.chain.chainId,
to = toAddress,
to = safe.address,
from = executionKey,
value = Wei(txData.value ?: BigInteger.ZERO),
data = ethTxInput(safe, txData, executionInfo)
Expand Down Expand Up @@ -211,6 +211,7 @@ class RpcClient(
val gasPriceRequest = EthGasPrice(id = 1)
val balanceRequest = EthBalance(address = tx.from!!, id = 2)
val nonceRequest = EthGetTransactionCount(from = tx.from!!, id = 3)

val callRequest = when(tx) {
is Transaction.Eip1559 -> {
EthCallEip1559(from = tx.from, transaction = tx, id = 4)
Expand Down Expand Up @@ -255,7 +256,7 @@ class RpcClient(
)
}

suspend fun send(tx: Transaction, signature: ECDSASignature) {
suspend fun send(tx: Transaction, signature: ECDSASignature): String {
val rawTxData = when (tx) {
is Transaction.Eip1559 -> {
byteArrayOf(tx.type, *tx.rlp(signature))
Expand All @@ -264,6 +265,11 @@ class RpcClient(
tx.rlp(signature)
}
}
ethereumRepository.sendRawTransaction(rawTxData.toHexString().addHexPrefix())
return ethereumRepository.sendRawTransaction(rawTxData.toHexString().addHexPrefix())
}

suspend fun getTransactionReceipt(chain: Chain, txHash: String): TransactionReceipt {
updateRpcUrl(chain)
return ethereumRepository.getTransactionReceipt(txHash)
}
}

0 comments on commit 3822c97

Please sign in to comment.