diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index cb6227af6..432aa2ee8 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -198,9 +198,6 @@ "nonceField": { "message": "Customize transaction nonce" }, - "nonceFieldPlaceholder": { - "message": "Automatically calculate" - }, "nonceFieldHeading": { "message": "Custom Nonce" }, diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index cbf12fb29..d7baedb43 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -520,6 +520,7 @@ module.exports = class MetamaskController extends EventEmitter { isNonceTaken: nodeify(txController.isNonceTaken, txController), estimateGas: nodeify(this.estimateGas, this), getPendingNonce: nodeify(this.getPendingNonce, this), + getNextNonce: nodeify(this.getNextNonce, this), // messageManager signMessage: nodeify(this.signMessage, this), @@ -1612,13 +1613,28 @@ module.exports = class MetamaskController extends EventEmitter { * @returns Promise */ async getPendingNonce (address) { - const { nonceDetails, releaseLock} = await this.txController.nonceTracker.getNonceLock(address) + const { nonceDetails, releaseLock } = await this.txController.nonceTracker.getNonceLock(address) const pendingNonce = nonceDetails.params.highestSuggested releaseLock() return pendingNonce } + /** + * Returns the next nonce according to the nonce-tracker + * @param address {string} - The hex string address for the transaction + * @returns Promise + */ + async getNextNonce (address) { + let nonceLock + try { + nonceLock = await this.txController.nonceTracker.getNonceLock(address) + } finally { + nonceLock.releaseLock() + } + return nonceLock.nextNonce + } + //============================================================================= // CONFIG //============================================================================= diff --git a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js b/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js index 8265dd20b..b72225dde 100644 --- a/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js +++ b/ui/app/pages/confirm-transaction-base/confirm-transaction-base.component.js @@ -282,7 +282,7 @@ export default class ConfirmTransactionBase extends Component { { if (!value.length || Number(value) < 0) { updateCustomNonce('') @@ -293,7 +293,7 @@ export default class ConfirmTransactionBase extends Component { }} fullWidth margin="dense" - value={customNonceValue || nextNonce || ''} + value={ customNonceValue || '' } /> @@ -494,6 +494,7 @@ export default class ConfirmTransactionBase extends Component { submitting: false, submitError: error.message, }) + updateCustomNonce('') }) } }) diff --git a/ui/app/store/actions.js b/ui/app/store/actions.js index cb4d4f41f..d70f931c1 100644 --- a/ui/app/store/actions.js +++ b/ui/app/store/actions.js @@ -2932,13 +2932,13 @@ function getNextNonce () { return (dispatch, getState) => { const address = getState().metamask.selectedAddress return new Promise((resolve, reject) => { - background.getPendingNonce(address, (err, pendingNonce) => { + background.getNextNonce(address, (err, nextNonce) => { if (err) { dispatch(actions.displayWarning(err.message)) return reject(err) } - dispatch(setNextNonce(pendingNonce)) - resolve(pendingNonce) + dispatch(setNextNonce(nextNonce)) + resolve(nextNonce) }) }) }