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": {
|
"transactions": {
|
||||||
"message": "transactions"
|
"message": "transactions"
|
||||||
},
|
},
|
||||||
|
"transactionError": {
|
||||||
|
"message": "Transaction Error. Exception thrown in contract code."
|
||||||
|
},
|
||||||
"transactionMemo": {
|
"transactionMemo": {
|
||||||
"message": "Transaction memo (optional)"
|
"message": "Transaction memo (optional)"
|
||||||
},
|
},
|
||||||
|
@ -109,18 +109,52 @@ function ConfirmSendEther () {
|
|||||||
this.onSubmit = this.onSubmit.bind(this)
|
this.onSubmit = this.onSubmit.bind(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfirmSendEther.prototype.componentWillMount = function () {
|
ConfirmSendEther.prototype.updateComponentSendErrors = function (prevProps) {
|
||||||
const { updateSendErrors } = this.props
|
const {
|
||||||
|
balance: oldBalance,
|
||||||
|
conversionRate: oldConversionRate,
|
||||||
|
} = prevProps
|
||||||
|
const {
|
||||||
|
updateSendErrors,
|
||||||
|
balance,
|
||||||
|
conversionRate,
|
||||||
|
send: {
|
||||||
|
errors: {
|
||||||
|
simulationFails,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} = this.props
|
||||||
const txMeta = this.gatherTxMeta()
|
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({
|
updateSendErrors({
|
||||||
insufficientFunds: balanceIsSufficient
|
insufficientFunds: balanceIsSufficient ? false : this.context.t('insufficientFunds'),
|
||||||
? 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 () {
|
ConfirmSendEther.prototype.getAmount = function () {
|
||||||
const { conversionRate, currentCurrency } = this.props
|
const { conversionRate, currentCurrency } = this.props
|
||||||
const txMeta = this.gatherTxMeta()
|
const txMeta = this.gatherTxMeta()
|
||||||
@ -457,8 +491,10 @@ ConfirmSendEther.prototype.render = function () {
|
|||||||
]),
|
]),
|
||||||
|
|
||||||
h('form#pending-tx-form', {
|
h('form#pending-tx-form', {
|
||||||
|
className: 'confirm-screen-form',
|
||||||
onSubmit: this.onSubmit,
|
onSubmit: this.onSubmit,
|
||||||
}, [
|
}, [
|
||||||
|
this.renderErrorMessage('simulationFails'),
|
||||||
h('.page-container__footer', [
|
h('.page-container__footer', [
|
||||||
// Cancel Button
|
// Cancel Button
|
||||||
h('button.btn-cancel.page-container__footer-button.allcaps', {
|
h('button.btn-cancel.page-container__footer-button.allcaps', {
|
||||||
|
@ -147,21 +147,56 @@ function ConfirmSendToken () {
|
|||||||
this.onSubmit = this.onSubmit.bind(this)
|
this.onSubmit = this.onSubmit.bind(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfirmSendToken.prototype.componentWillMount = function () {
|
ConfirmSendToken.prototype.updateComponentSendErrors = function (prevProps) {
|
||||||
const { tokenContract, selectedAddress, updateSendErrors} = this.props
|
const {
|
||||||
|
balance: oldBalance,
|
||||||
|
conversionRate: oldConversionRate,
|
||||||
|
} = prevProps
|
||||||
|
const {
|
||||||
|
updateSendErrors,
|
||||||
|
balance,
|
||||||
|
conversionRate,
|
||||||
|
send: {
|
||||||
|
errors: {
|
||||||
|
simulationFails,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} = this.props
|
||||||
const txMeta = this.gatherTxMeta()
|
const txMeta = this.gatherTxMeta()
|
||||||
|
|
||||||
|
const shouldUpdateBalanceSendErrors = balance && [
|
||||||
|
balance !== oldBalance,
|
||||||
|
conversionRate !== oldConversionRate,
|
||||||
|
].some(x => Boolean(x))
|
||||||
|
|
||||||
|
if (shouldUpdateBalanceSendErrors) {
|
||||||
const balanceIsSufficient = this.isBalanceSufficient(txMeta)
|
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
|
tokenContract && tokenContract
|
||||||
.balanceOf(selectedAddress)
|
.balanceOf(selectedAddress)
|
||||||
.then(usersToken => {
|
.then(usersToken => {
|
||||||
})
|
})
|
||||||
this.props.updateTokenExchangeRate()
|
this.props.updateTokenExchangeRate()
|
||||||
|
this.updateComponentSendErrors({})
|
||||||
|
}
|
||||||
|
|
||||||
updateSendErrors({
|
ConfirmSendToken.prototype.componentDidUpdate = function (prevProps) {
|
||||||
insufficientFunds: balanceIsSufficient
|
this.updateComponentSendErrors(prevProps)
|
||||||
? false
|
|
||||||
: this.context.t('insufficientFunds'),
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfirmSendToken.prototype.getAmount = function () {
|
ConfirmSendToken.prototype.getAmount = function () {
|
||||||
@ -467,8 +502,10 @@ ConfirmSendToken.prototype.render = function () {
|
|||||||
]),
|
]),
|
||||||
|
|
||||||
h('form#pending-tx-form', {
|
h('form#pending-tx-form', {
|
||||||
|
className: 'confirm-screen-form',
|
||||||
onSubmit: this.onSubmit,
|
onSubmit: this.onSubmit,
|
||||||
}, [
|
}, [
|
||||||
|
this.renderErrorMessage('simulationFails'),
|
||||||
h('.page-container__footer', [
|
h('.page-container__footer', [
|
||||||
// Cancel Button
|
// Cancel Button
|
||||||
h('button.btn-cancel.page-container__footer-button.allcaps', {
|
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 {
|
.confirm-screen-confirm-button {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
Loading…
Reference in New Issue
Block a user