From 325dd9c0362e5e718c871d1bc6517776f3b27139 Mon Sep 17 00:00:00 2001 From: Dan J Miller Date: Thu, 8 Oct 2020 16:01:35 -0230 Subject: [PATCH] call this.txStateManager.setTxStatusConfirmed before async call in confirmTransaction (#9522) * call this.txStateManager.setTxStatusConfirmed before async call in confirmTransaction in the transactions controller * Clone txMeta before setTxStatusConfirmed in confirmTransaction * Correctly updateTx in confirmTransaction * Track swaps event only if it is a swap transaction --- app/scripts/controllers/transactions/index.js | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index b259fd6bf..8e38f7bd6 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -9,6 +9,7 @@ import { ethers } from 'ethers' import NonceTracker from 'nonce-tracker' import log from 'loglevel' import BigNumber from 'bignumber.js' +import { cloneDeep } from 'lodash' import { TOKEN_METHOD_APPROVE, TOKEN_METHOD_TRANSFER, @@ -562,9 +563,9 @@ export default class TransactionController extends EventEmitter { async confirmTransaction (txId, txReceipt) { // get the txReceipt before marking the transaction confirmed // to ensure the receipt is gotten before the ui revives the tx - const txMeta = this.txStateManager.getTx(txId) + const initialTxMeta = this.txStateManager.getTx(txId) - if (!txMeta) { + if (!initialTxMeta) { return } @@ -575,24 +576,25 @@ export default class TransactionController extends EventEmitter { ? txReceipt.gasUsed : txReceipt.gasUsed.toString(16) - txMeta.txReceipt = { + initialTxMeta.txReceipt = { ...txReceipt, gasUsed, } + this.txStateManager.setTxStatusConfirmed(txId) + this._markNonceDuplicatesDropped(txId) - if (txMeta.transactionCategory === SWAP) { + this.txStateManager.updateTx(initialTxMeta, 'transactions#confirmTransaction - add txReceipt') + + if (initialTxMeta.transactionCategory === SWAP) { + const txMeta = cloneDeep(initialTxMeta) const postTxBalance = await this.query.getBalance(txMeta.txParams.from) txMeta.postTxBalance = postTxBalance.toString(16) + this._trackSwapsMetrics(txMeta) } - this.txStateManager.updateTx(txMeta, 'transactions#confirmTransaction - add txReceipt') - this._trackSwapsMetrics(txMeta) } catch (err) { log.error(err) } - - this.txStateManager.setTxStatusConfirmed(txId) - this._markNonceDuplicatesDropped(txId) } /**