Merge pull request #3887 from MetaMask/i#3886

transactions - remove unnecessary keys on txParams
feature/default_network_editable
kumavis 7 years ago committed by GitHub
commit 741c6097a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 37
      app/scripts/controllers/transactions.js
  2. 17
      test/unit/tx-controller-test.js

@ -185,10 +185,10 @@ module.exports = class TransactionController extends EventEmitter {
async addUnapprovedTransaction (txParams) { async addUnapprovedTransaction (txParams) {
// validate // validate
this._validateTxParams(txParams) const normalizedTxParams = this._normalizeTxParams(txParams)
this._normalizeTxParams(txParams) this._validateTxParams(normalizedTxParams)
// construct txMeta // construct txMeta
let txMeta = this.txStateManager.generateTxMeta({txParams}) let txMeta = this.txStateManager.generateTxMeta({ txParams: normalizedTxParams })
this.addTx(txMeta) this.addTx(txMeta)
this.emit('newUnapprovedTx', txMeta) this.emit('newUnapprovedTx', txMeta)
// add default tx params // add default tx params
@ -315,25 +315,24 @@ module.exports = class TransactionController extends EventEmitter {
// //
_normalizeTxParams (txParams) { _normalizeTxParams (txParams) {
delete txParams.chainId // functions that handle normalizing of that key in txParams
const whiteList = {
if ( !txParams.to ) { from: from => ethUtil.addHexPrefix(from).toLowerCase(),
delete txParams.to to: to => ethUtil.addHexPrefix(txParams.to).toLowerCase(),
} else { nonce: nonce => ethUtil.addHexPrefix(nonce),
txParams.to = ethUtil.addHexPrefix(txParams.to) value: value => ethUtil.addHexPrefix(value),
} data: data => ethUtil.addHexPrefix(data),
txParams.from = ethUtil.addHexPrefix(txParams.from).toLowerCase() gas: gas => ethUtil.addHexPrefix(gas),
gasPrice: gasPrice => ethUtil.addHexPrefix(gasPrice),
if (!txParams.data) {
delete txParams.data
} else {
txParams.data = ethUtil.addHexPrefix(txParams.data)
} }
if (txParams.value) txParams.value = ethUtil.addHexPrefix(txParams.value) // apply only keys in the whiteList
const normalizedTxParams = {}
Object.keys(whiteList).forEach((key) => {
if (txParams[key]) normalizedTxParams[key] = whiteList[key](txParams[key])
})
if (txParams.gas) txParams.gas = ethUtil.addHexPrefix(txParams.gas) return normalizedTxParams
if (txParams.gasPrice) txParams.gas = ethUtil.addHexPrefix(txParams.gas)
} }
_validateTxParams (txParams) { _validateTxParams (txParams) {

@ -239,19 +239,20 @@ describe('Transaction Controller', function () {
from: 'a7df1beDBF813f57096dF77FCd515f0B3900e402', from: 'a7df1beDBF813f57096dF77FCd515f0B3900e402',
to: null, to: null,
data: '68656c6c6f20776f726c64', data: '68656c6c6f20776f726c64',
random: 'hello world',
} }
txController._normalizeTxParams(txParams) let normalizedTxParams = txController._normalizeTxParams(txParams)
assert(!txParams.chainId, 'their should be no chainId') assert(!normalizedTxParams.chainId, 'their should be no chainId')
assert(!txParams.to, 'their should be no to address if null') assert(!normalizedTxParams.to, 'their should be no to address if null')
assert.equal(txParams.from.slice(0, 2), '0x', 'from should be hexPrefixd') assert.equal(normalizedTxParams.from.slice(0, 2), '0x', 'from should be hexPrefixd')
assert.equal(txParams.data.slice(0, 2), '0x', 'data should be hexPrefixd') assert.equal(normalizedTxParams.data.slice(0, 2), '0x', 'data should be hexPrefixd')
assert(!('random' in normalizedTxParams), 'their should be no random key in normalizedTxParams')
txParams.to = 'a7df1beDBF813f57096dF77FCd515f0B3900e402' txParams.to = 'a7df1beDBF813f57096dF77FCd515f0B3900e402'
normalizedTxParams = txController._normalizeTxParams(txParams)
txController._normalizeTxParams(txParams) assert.equal(normalizedTxParams.to.slice(0, 2), '0x', 'to should be hexPrefixd')
assert.equal(txParams.to.slice(0, 2), '0x', 'to should be hexPrefixd')
}) })
}) })

Loading…
Cancel
Save