mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Fix gas calculation and nonce / forceGasMin state setting errors; retry button shows on correct tx.
This commit is contained in:
parent
c1ff927fa0
commit
f805a2eb73
@ -117,9 +117,9 @@ CustomizeGasModal.prototype.save = function (gasPrice, gasLimit, gasTotal) {
|
||||
updateSendAmount(maxAmount)
|
||||
}
|
||||
|
||||
updateGasPrice(gasPrice)
|
||||
updateGasLimit(gasLimit)
|
||||
updateGasTotal(gasTotal)
|
||||
updateGasPrice(ethUtil.addHexPrefix(gasPrice))
|
||||
updateGasLimit(ethUtil.addHexPrefix(gasLimit))
|
||||
updateGasTotal(ethUtil.addHexPrefix(gasTotal))
|
||||
hideModal()
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,11 @@ const Identicon = require('../identicon')
|
||||
const ethUtil = require('ethereumjs-util')
|
||||
const BN = ethUtil.BN
|
||||
const hexToBn = require('../../../../app/scripts/lib/hex-to-bn')
|
||||
const { conversionUtil, addCurrencies } = require('../../conversion-util')
|
||||
const {
|
||||
conversionUtil,
|
||||
addCurrencies,
|
||||
multiplyCurrencies
|
||||
} = require('../../conversion-util')
|
||||
const GasFeeDisplay = require('../send/gas-fee-display-v2')
|
||||
|
||||
const { MIN_GAS_PRICE_HEX } = require('../send/send-constants')
|
||||
@ -37,7 +41,7 @@ function mapDispatchToProps (dispatch) {
|
||||
return {
|
||||
clearSend: () => dispatch(actions.clearSend()),
|
||||
editTransaction: txMeta => {
|
||||
const { id, txParams, lastGasPrice } = txMeta
|
||||
const { id, txParams } = txMeta
|
||||
const {
|
||||
gas: gasLimit,
|
||||
gasPrice,
|
||||
@ -45,21 +49,6 @@ function mapDispatchToProps (dispatch) {
|
||||
value: amount,
|
||||
} = txParams
|
||||
|
||||
let forceGasMin
|
||||
let nonce
|
||||
if (lastGasPrice) {
|
||||
const stripped = ethUtil.stripHexPrefix(lastGasPrice)
|
||||
forceGasMin = ethUtil.addHexPrefix(addCurrencies(stripped, MIN_GAS_PRICE_HEX, {
|
||||
aBase: 16,
|
||||
bBase: 16,
|
||||
toNumericBase: 'hex',
|
||||
fromDenomination: 'WEI',
|
||||
toDenomination: 'GWEI',
|
||||
}))
|
||||
|
||||
nonce = txParams.nonce
|
||||
}
|
||||
|
||||
dispatch(actions.updateSend({
|
||||
gasLimit,
|
||||
gasPrice,
|
||||
@ -68,21 +57,36 @@ function mapDispatchToProps (dispatch) {
|
||||
amount,
|
||||
errors: { to: null, amount: null },
|
||||
editingTransactionId: id,
|
||||
forceGasMin,
|
||||
nonce,
|
||||
}))
|
||||
dispatch(actions.showSendPage())
|
||||
},
|
||||
cancelTransaction: ({ id }) => dispatch(actions.cancelTx({ id })),
|
||||
showCustomizeGasModal: (txMeta, sendGasLimit, sendGasPrice, sendGasTotal) => {
|
||||
const { id, txParams } = txMeta
|
||||
const { id, txParams, lastGasPrice } = txMeta
|
||||
const { gas: txGasLimit, gasPrice: txGasPrice } = txParams
|
||||
|
||||
let forceGasMin
|
||||
let nonce
|
||||
if (lastGasPrice) {
|
||||
const stripped = ethUtil.stripHexPrefix(lastGasPrice)
|
||||
forceGasMin = ethUtil.addHexPrefix(multiplyCurrencies(stripped, 1.1, {
|
||||
multiplicandBase: 16,
|
||||
multiplierBase: 10,
|
||||
toNumericBase: 'hex',
|
||||
fromDenomination: 'WEI',
|
||||
toDenomination: 'GWEI',
|
||||
}))
|
||||
|
||||
nonce = txParams.nonce
|
||||
}
|
||||
|
||||
dispatch(actions.updateSend({
|
||||
gasLimit: sendGasLimit || txGasLimit,
|
||||
gasPrice: sendGasPrice || txGasPrice,
|
||||
editingTransactionId: id,
|
||||
gasTotal: sendGasTotal,
|
||||
forceGasMin,
|
||||
nonce,
|
||||
}))
|
||||
dispatch(actions.showModal({ name: 'CUSTOMIZE_GAS' }))
|
||||
},
|
||||
@ -493,6 +497,14 @@ ConfirmSendEther.prototype.gatherTxMeta = function () {
|
||||
const state = this.state
|
||||
const txData = clone(state.txData) || clone(props.txData)
|
||||
|
||||
if (txData.lastGasPrice) {
|
||||
const { gasPrice: sendGasPrice, gas: sendGasLimit } = props.send
|
||||
const { gasPrice: txGasPrice, gas: txGasLimit } = txData.txParams
|
||||
|
||||
txData.txParams.gasPrice = sendGasPrice || txGasPrice
|
||||
txData.txParams.gas = sendGasLimit || txGasLimit
|
||||
}
|
||||
|
||||
// log.debug(`UI has defaulted to tx meta ${JSON.stringify(txData)}`)
|
||||
return txData
|
||||
}
|
||||
|
@ -185,9 +185,11 @@ TxListItem.prototype.showRetryButton = function () {
|
||||
} = this.props
|
||||
const currentNonce = txParams.nonce
|
||||
const currentNonceTxs = selectedAddressTxList.filter(tx => tx.txParams.nonce === currentNonce)
|
||||
const isLastWithNonce = currentNonceTxs[currentNonceTxs.length - 1].id === transactionId
|
||||
const currentStatusNonceTx = currentNonceTxs.filter(tx =>
|
||||
tx.status !== 'rejected' && tx.status !== 'failed')
|
||||
const isLastPassingWithNonce = currentStatusNonceTx[currentStatusNonceTx.length - 1].id === transactionId
|
||||
|
||||
return transactionStatus === 'submitted' && isLastWithNonce && Date.now() - transactionTime > 5000
|
||||
return transactionStatus === 'submitted' && isLastPassingWithNonce && Date.now() - transactionTime > 30000
|
||||
}
|
||||
|
||||
TxListItem.prototype.resubmit = function () {
|
||||
|
Loading…
Reference in New Issue
Block a user