From 19d72c9b0b4539f55624f6e9d41ded46c31d38d5 Mon Sep 17 00:00:00 2001
From: Dan Miller <danjm.com@gmail.com>
Date: Fri, 21 Sep 2018 15:04:21 -0230
Subject: Adds getPendingNonce method to provider initialization options in
 metamask-controller.

---
 app/scripts/metamask-controller.js | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

(limited to 'app/scripts/metamask-controller.js')

diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index 431a49dde..f11626c78 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -268,6 +268,7 @@ module.exports = class MetamaskController extends EventEmitter {
       // msg signing
       processEthSignMessage: this.newUnsignedMessage.bind(this),
       processPersonalMessage: this.newUnsignedPersonalMessage.bind(this),
+      getPendingNonce: this.getPendingNonce.bind(this),
     }
     const providerProxy = this.networkController.initializeProvider(providerOpts)
     return providerProxy
@@ -1362,6 +1363,19 @@ module.exports = class MetamaskController extends EventEmitter {
     return '0x' + percentileNumBn.mul(GWEI_BN).toString(16)
   }
 
+  /**
+   * Returns the nonce that will be associated with a transaction once approved
+   * @param address {string} - The hex string address for the transaction
+   * @returns Promise<number>
+   */
+  async getPendingNonce (address) {
+    const { nonceDetails, releaseLock} = await this.txController.nonceTracker.getNonceLock(address)
+    const pendingNonce = nonceDetails.params.highestSuggested
+
+    releaseLock()
+    return pendingNonce
+  }
+
 //=============================================================================
 // CONFIG
 //=============================================================================
-- 
cgit