mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Readjust gas fees when switching networks on the send screen
This commit is contained in:
parent
668aab11d1
commit
ccb80594be
@ -51,6 +51,7 @@ function mapStateToProps (state) {
|
|||||||
amountConversionRate: selectedToken ? tokenToFiatRate : conversionRate,
|
amountConversionRate: selectedToken ? tokenToFiatRate : conversionRate,
|
||||||
tokenContract: getSelectedTokenContract(state),
|
tokenContract: getSelectedTokenContract(state),
|
||||||
unapprovedTxs: state.metamask.unapprovedTxs,
|
unapprovedTxs: state.metamask.unapprovedTxs,
|
||||||
|
network: state.metamask.network,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,6 +85,20 @@ SendTransactionScreen.prototype.componentWillMount = function () {
|
|||||||
const {
|
const {
|
||||||
updateTokenExchangeRate,
|
updateTokenExchangeRate,
|
||||||
selectedToken = {},
|
selectedToken = {},
|
||||||
|
} = this.props
|
||||||
|
|
||||||
|
const { symbol } = selectedToken || {}
|
||||||
|
|
||||||
|
if (symbol) {
|
||||||
|
updateTokenExchangeRate(symbol)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.updateGas()
|
||||||
|
}
|
||||||
|
|
||||||
|
SendTransactionScreen.prototype.updateGas = function () {
|
||||||
|
const {
|
||||||
|
selectedToken = {},
|
||||||
getGasPrice,
|
getGasPrice,
|
||||||
estimateGas,
|
estimateGas,
|
||||||
selectedAddress,
|
selectedAddress,
|
||||||
@ -96,17 +110,16 @@ SendTransactionScreen.prototype.componentWillMount = function () {
|
|||||||
gasPrice,
|
gasPrice,
|
||||||
gasLimit,
|
gasLimit,
|
||||||
} = this.props
|
} = this.props
|
||||||
|
|
||||||
const { symbol } = selectedToken || {}
|
const { symbol } = selectedToken || {}
|
||||||
|
|
||||||
if (symbol) {
|
const tokenBalancePromise = tokenContract
|
||||||
updateTokenExchangeRate(symbol)
|
? tokenContract.balanceOf(from.address)
|
||||||
}
|
: Promise.resolve()
|
||||||
|
|
||||||
const estimateGasParams = getParamsForGasEstimate(selectedAddress, symbol, data)
|
|
||||||
|
|
||||||
const tokenBalancePromise = tokenContract && tokenContract.balanceOf(from.address)
|
|
||||||
let newGasTotal
|
|
||||||
if (!editingTransactionId) {
|
if (!editingTransactionId) {
|
||||||
|
const estimateGasParams = getParamsForGasEstimate(selectedAddress, symbol, data)
|
||||||
|
|
||||||
Promise
|
Promise
|
||||||
.all([
|
.all([
|
||||||
getGasPrice(),
|
getGasPrice(),
|
||||||
@ -114,27 +127,26 @@ SendTransactionScreen.prototype.componentWillMount = function () {
|
|||||||
tokenBalancePromise,
|
tokenBalancePromise,
|
||||||
])
|
])
|
||||||
.then(([gasPrice, gas, usersToken]) => {
|
.then(([gasPrice, gas, usersToken]) => {
|
||||||
|
const newGasTotal = this.getGasTotal(gas, gasPrice)
|
||||||
const newGasTotal = multiplyCurrencies(gas, gasPrice, {
|
|
||||||
toNumericBase: 'hex',
|
|
||||||
multiplicandBase: 16,
|
|
||||||
multiplierBase: 16,
|
|
||||||
})
|
|
||||||
updateGasTotal(newGasTotal)
|
updateGasTotal(newGasTotal)
|
||||||
this.updateSendTokenBalance(usersToken)
|
this.updateSendTokenBalance(usersToken)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
newGasTotal = multiplyCurrencies(gasLimit, gasPrice, {
|
const newGasTotal = this.getGasTotal(gasLimit, gasPrice)
|
||||||
toNumericBase: 'hex',
|
|
||||||
multiplicandBase: 16,
|
|
||||||
multiplierBase: 16,
|
|
||||||
})
|
|
||||||
updateGasTotal(newGasTotal)
|
updateGasTotal(newGasTotal)
|
||||||
tokenBalancePromise && tokenBalancePromise.then(
|
tokenBalancePromise
|
||||||
usersToken => this.updateSendTokenBalance(usersToken))
|
.then(usersToken => this.updateSendTokenBalance(usersToken))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SendTransactionScreen.prototype.getGasTotal = function (gasLimit, gasPrice) {
|
||||||
|
return multiplyCurrencies(gasLimit, gasPrice, {
|
||||||
|
toNumericBase: 'hex',
|
||||||
|
multiplicandBase: 16,
|
||||||
|
multiplierBase: 16,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
SendTransactionScreen.prototype.componentDidUpdate = function (prevProps) {
|
SendTransactionScreen.prototype.componentDidUpdate = function (prevProps) {
|
||||||
const {
|
const {
|
||||||
from: { balance },
|
from: { balance },
|
||||||
@ -142,11 +154,14 @@ SendTransactionScreen.prototype.componentDidUpdate = function (prevProps) {
|
|||||||
tokenBalance,
|
tokenBalance,
|
||||||
amount,
|
amount,
|
||||||
selectedToken,
|
selectedToken,
|
||||||
|
network,
|
||||||
} = this.props
|
} = this.props
|
||||||
|
|
||||||
const {
|
const {
|
||||||
from: { balance: prevBalance },
|
from: { balance: prevBalance },
|
||||||
gasTotal: prevGasTotal,
|
gasTotal: prevGasTotal,
|
||||||
tokenBalance: prevTokenBalance,
|
tokenBalance: prevTokenBalance,
|
||||||
|
network: prevNetwork,
|
||||||
} = prevProps
|
} = prevProps
|
||||||
|
|
||||||
const notFirstRender = [prevBalance, prevGasTotal].every(n => n !== null)
|
const notFirstRender = [prevBalance, prevGasTotal].every(n => n !== null)
|
||||||
@ -156,8 +171,14 @@ SendTransactionScreen.prototype.componentDidUpdate = function (prevProps) {
|
|||||||
const tokenBalanceHasChanged = selectedToken && tokenBalance !== prevTokenBalance
|
const tokenBalanceHasChanged = selectedToken && tokenBalance !== prevTokenBalance
|
||||||
const amountValidationChange = balanceHasChanged || gasTotalHasChange || tokenBalanceHasChanged
|
const amountValidationChange = balanceHasChanged || gasTotalHasChange || tokenBalanceHasChanged
|
||||||
|
|
||||||
if (notFirstRender && amountValidationChange) {
|
if (notFirstRender) {
|
||||||
this.validateAmount(amount)
|
if (amountValidationChange) {
|
||||||
|
this.validateAmount(amount)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (network !== prevNetwork && network !== 'loading') {
|
||||||
|
this.updateGas()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user