mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge pull request #3825 from danjm/i3668-warnusertxsimulationfails
Add simulation failure errors while improve send error handling on confirm screen
This commit is contained in:
commit
8cd2022169
@ -826,6 +826,9 @@
|
||||
"transactions": {
|
||||
"message": "transactions"
|
||||
},
|
||||
"transactionError": {
|
||||
"message": "Transaction Error. Exception thrown in contract code."
|
||||
},
|
||||
"transactionMemo": {
|
||||
"message": "Transaction memo (optional)"
|
||||
},
|
||||
|
@ -109,16 +109,50 @@ function ConfirmSendEther () {
|
||||
this.onSubmit = this.onSubmit.bind(this)
|
||||
}
|
||||
|
||||
ConfirmSendEther.prototype.componentWillMount = function () {
|
||||
const { updateSendErrors } = this.props
|
||||
ConfirmSendEther.prototype.updateComponentSendErrors = function (prevProps) {
|
||||
const {
|
||||
balance: oldBalance,
|
||||
conversionRate: oldConversionRate,
|
||||
} = prevProps
|
||||
const {
|
||||
updateSendErrors,
|
||||
balance,
|
||||
conversionRate,
|
||||
send: {
|
||||
errors: {
|
||||
simulationFails,
|
||||
},
|
||||
},
|
||||
} = this.props
|
||||
const txMeta = this.gatherTxMeta()
|
||||
const balanceIsSufficient = this.isBalanceSufficient(txMeta)
|
||||
|
||||
updateSendErrors({
|
||||
insufficientFunds: balanceIsSufficient
|
||||
? false
|
||||
: this.context.t('insufficientFunds'),
|
||||
})
|
||||
const shouldUpdateBalanceSendErrors = balance && [
|
||||
balance !== oldBalance,
|
||||
conversionRate !== oldConversionRate,
|
||||
].some(x => Boolean(x))
|
||||
|
||||
if (shouldUpdateBalanceSendErrors) {
|
||||
const balanceIsSufficient = this.isBalanceSufficient(txMeta)
|
||||
updateSendErrors({
|
||||
insufficientFunds: balanceIsSufficient ? false : this.context.t('insufficientFunds'),
|
||||
})
|
||||
}
|
||||
|
||||
const shouldUpdateSimulationSendError = Boolean(txMeta.simulationFails) !== Boolean(simulationFails)
|
||||
|
||||
if (shouldUpdateSimulationSendError) {
|
||||
updateSendErrors({
|
||||
simulationFails: !txMeta.simulationFails ? false : this.context.t('transactionError'),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
ConfirmSendEther.prototype.componentWillMount = function () {
|
||||
this.updateComponentSendErrors({})
|
||||
}
|
||||
|
||||
ConfirmSendEther.prototype.componentDidUpdate = function (prevProps) {
|
||||
this.updateComponentSendErrors(prevProps)
|
||||
}
|
||||
|
||||
ConfirmSendEther.prototype.getAmount = function () {
|
||||
@ -457,8 +491,10 @@ ConfirmSendEther.prototype.render = function () {
|
||||
]),
|
||||
|
||||
h('form#pending-tx-form', {
|
||||
className: 'confirm-screen-form',
|
||||
onSubmit: this.onSubmit,
|
||||
}, [
|
||||
this.renderErrorMessage('simulationFails'),
|
||||
h('.page-container__footer', [
|
||||
// Cancel Button
|
||||
h('button.btn-cancel.page-container__footer-button.allcaps', {
|
||||
|
@ -147,21 +147,56 @@ function ConfirmSendToken () {
|
||||
this.onSubmit = this.onSubmit.bind(this)
|
||||
}
|
||||
|
||||
ConfirmSendToken.prototype.componentWillMount = function () {
|
||||
const { tokenContract, selectedAddress, updateSendErrors} = this.props
|
||||
ConfirmSendToken.prototype.updateComponentSendErrors = function (prevProps) {
|
||||
const {
|
||||
balance: oldBalance,
|
||||
conversionRate: oldConversionRate,
|
||||
} = prevProps
|
||||
const {
|
||||
updateSendErrors,
|
||||
balance,
|
||||
conversionRate,
|
||||
send: {
|
||||
errors: {
|
||||
simulationFails,
|
||||
},
|
||||
},
|
||||
} = this.props
|
||||
const txMeta = this.gatherTxMeta()
|
||||
const balanceIsSufficient = this.isBalanceSufficient(txMeta)
|
||||
|
||||
const shouldUpdateBalanceSendErrors = balance && [
|
||||
balance !== oldBalance,
|
||||
conversionRate !== oldConversionRate,
|
||||
].some(x => Boolean(x))
|
||||
|
||||
if (shouldUpdateBalanceSendErrors) {
|
||||
const balanceIsSufficient = this.isBalanceSufficient(txMeta)
|
||||
updateSendErrors({
|
||||
insufficientFunds: balanceIsSufficient ? false : this.context.t('insufficientFunds'),
|
||||
})
|
||||
}
|
||||
|
||||
const shouldUpdateSimulationSendError = Boolean(txMeta.simulationFails) !== Boolean(simulationFails)
|
||||
|
||||
if (shouldUpdateSimulationSendError) {
|
||||
updateSendErrors({
|
||||
simulationFails: !txMeta.simulationFails ? false : this.context.t('transactionError'),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
ConfirmSendToken.prototype.componentWillMount = function () {
|
||||
const { tokenContract, selectedAddress } = this.props
|
||||
tokenContract && tokenContract
|
||||
.balanceOf(selectedAddress)
|
||||
.then(usersToken => {
|
||||
})
|
||||
this.props.updateTokenExchangeRate()
|
||||
this.updateComponentSendErrors({})
|
||||
}
|
||||
|
||||
updateSendErrors({
|
||||
insufficientFunds: balanceIsSufficient
|
||||
? false
|
||||
: this.context.t('insufficientFunds'),
|
||||
})
|
||||
ConfirmSendToken.prototype.componentDidUpdate = function (prevProps) {
|
||||
this.updateComponentSendErrors(prevProps)
|
||||
}
|
||||
|
||||
ConfirmSendToken.prototype.getAmount = function () {
|
||||
@ -467,8 +502,10 @@ ConfirmSendToken.prototype.render = function () {
|
||||
]),
|
||||
|
||||
h('form#pending-tx-form', {
|
||||
className: 'confirm-screen-form',
|
||||
onSubmit: this.onSubmit,
|
||||
}, [
|
||||
this.renderErrorMessage('simulationFails'),
|
||||
h('.page-container__footer', [
|
||||
// Cancel Button
|
||||
h('button.btn-cancel.page-container__footer-button.allcaps', {
|
||||
|
@ -312,6 +312,17 @@ section .confirm-screen-account-number,
|
||||
}
|
||||
}
|
||||
|
||||
.confirm-screen-form {
|
||||
position: relative;
|
||||
|
||||
.confirm-screen-error {
|
||||
right: 0;
|
||||
width: 100%;
|
||||
margin-top: 7px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.confirm-screen-confirm-button {
|
||||
height: 50px;
|
||||
border-radius: 4px;
|
||||
|
Loading…
Reference in New Issue
Block a user