mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Ensure tx has value before it's added (#8486)
Previously a transaction would get assigned a default value during the `addTxGasDefaults` function, after the transaction was added and sent to the UI. Instead the transaction is assigned a default value before it gets added. This flow is simpler to follow, and it avoids the race condition where the transaction is assigned a value from the UI before this default is set. In that situation, the UI-assigned value would be overridden, which is obviously not desired.
This commit is contained in:
parent
c2b588975c
commit
92592fc905
@ -233,6 +233,12 @@ export default class TransactionController extends EventEmitter {
|
||||
|
||||
const { transactionCategory, getCodeResponse } = await this._determineTransactionCategory(txParams)
|
||||
txMeta.transactionCategory = transactionCategory
|
||||
|
||||
// ensure value
|
||||
txMeta.txParams.value = txMeta.txParams.value
|
||||
? ethUtil.addHexPrefix(txMeta.txParams.value)
|
||||
: '0x0'
|
||||
|
||||
this.addTx(txMeta)
|
||||
this.emit('newUnapprovedTx', txMeta)
|
||||
|
||||
@ -262,9 +268,6 @@ export default class TransactionController extends EventEmitter {
|
||||
async addTxGasDefaults (txMeta, getCodeResponse) {
|
||||
const txParams = txMeta.txParams
|
||||
|
||||
// ensure value
|
||||
|
||||
txParams.value = txParams.value ? ethUtil.addHexPrefix(txParams.value) : '0x0'
|
||||
txMeta.gasPriceSpecified = Boolean(txParams.gasPrice)
|
||||
let gasPrice = txParams.gasPrice
|
||||
if (!gasPrice) {
|
||||
|
@ -182,6 +182,7 @@ describe('Transaction Controller', function () {
|
||||
assert.ok('metamaskNetworkId' in txMeta, 'should have a metamaskNetworkId')
|
||||
assert.ok('txParams' in txMeta, 'should have a txParams')
|
||||
assert.ok('history' in txMeta, 'should have a history')
|
||||
assert.equal(txMeta.txParams.value, '0x0', 'should have added 0x0 as the value')
|
||||
|
||||
const memTxMeta = txController.txStateManager.getTx(txMeta.id)
|
||||
assert.deepEqual(txMeta, memTxMeta)
|
||||
@ -241,7 +242,6 @@ describe('Transaction Controller', function () {
|
||||
providerResultStub.eth_estimateGas = '5209'
|
||||
|
||||
const txMetaWithDefaults = await txController.addTxGasDefaults(txMeta)
|
||||
assert.equal(txMetaWithDefaults.txParams.value, '0x0', 'should have added 0x0 as the value')
|
||||
assert.ok(txMetaWithDefaults.txParams.gasPrice, 'should have added the gas price')
|
||||
assert.ok(txMetaWithDefaults.txParams.gas, 'should have added the gas field')
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user