From 861bd877f3bf1c0c71a00f1b90048e93dec03488 Mon Sep 17 00:00:00 2001
From: Dan Finlay <dan@danfinlay.com>
Date: Fri, 29 Sep 2017 11:19:54 -0700
Subject: Ensure selected account is always set if possible

Fixes #2218

Subscribes to keyringController, and if only one account exists, sets it as selected.
---
 app/scripts/metamask-controller.js | 9 +++++++++
 1 file changed, 9 insertions(+)

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

diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index 5b3161bc6..b28f2738a 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -100,6 +100,14 @@ module.exports = class MetamaskController extends EventEmitter {
       encryptor: opts.encryptor || undefined,
     })
 
+    // If only one account exists, make sure it is selected.
+    this.keyringController.store.subscribe((state) => {
+      const addresses = Object.keys(state.walletNicknames || {})
+      if (addresses.length === 1) {
+        const address = addresses[0]
+        this.preferencesController.setSelectedAddress(address)
+      }
+    })
     this.keyringController.on('newAccount', (address) => {
       this.preferencesController.setSelectedAddress(address)
       this.accountTracker.addAccount(address)
@@ -222,6 +230,7 @@ module.exports = class MetamaskController extends EventEmitter {
         const isUnlocked = this.keyringController.memStore.getState().isUnlocked
         const result = []
         const selectedAddress = this.preferencesController.getSelectedAddress()
+
         // only show address if account is unlocked
         if (isUnlocked && selectedAddress) {
           result.push(selectedAddress)
-- 
cgit 


From ac80eaca1fc9923cd5696282ba2bc6bace22ff83 Mon Sep 17 00:00:00 2001
From: frankiebee <frankie.diamond@gmail.com>
Date: Fri, 29 Sep 2017 12:54:05 -0700
Subject: pending-tx - dont check the balance to rebrodcast

---
 app/scripts/metamask-controller.js | 1 -
 1 file changed, 1 deletion(-)

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

diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index b28f2738a..e152dfedb 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -132,7 +132,6 @@ module.exports = class MetamaskController extends EventEmitter {
       provider: this.provider,
       blockTracker: this.blockTracker,
       ethQuery: this.ethQuery,
-      accountTracker: this.accountTracker,
     })
     this.txController.on('newUnaprovedTx', opts.showUnapprovedTx.bind(opts))
 
-- 
cgit 


From b88d11f86ede907bdf51cd224e5ea6285e56147b Mon Sep 17 00:00:00 2001
From: kumavis <aaron@kumavis.me>
Date: Fri, 29 Sep 2017 16:09:38 -0700
Subject: network controller - small refactor

---
 app/scripts/metamask-controller.js | 38 +++++++++++++++++++++-----------------
 1 file changed, 21 insertions(+), 17 deletions(-)

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

diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index b28f2738a..fa6f1a245 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -217,13 +217,11 @@ module.exports = class MetamaskController extends EventEmitter {
   //
 
   initializeProvider () {
-    return this.networkController.initializeProvider({
+    const providerOpts = {
       static: {
         eth_syncing: false,
         web3_clientVersion: `MetaMask/v${version}`,
       },
-      // rpc data source
-      rpcUrl: this.networkController.getCurrentRpcAddress(),
       originHttpHeaderKey: 'X-Metamask-Origin',
       // account mgmt
       getAccounts: (cb) => {
@@ -243,7 +241,9 @@ module.exports = class MetamaskController extends EventEmitter {
       processMessage: this.newUnsignedMessage.bind(this),
       // personal_sign msg signing
       processPersonalMessage: this.newUnsignedPersonalMessage.bind(this),
-    })
+    }
+    const providerProxy = this.networkController.initializeProvider(providerOpts)
+    return providerProxy
   }
 
   initPublicConfigStore () {
@@ -312,13 +312,14 @@ module.exports = class MetamaskController extends EventEmitter {
     const txController = this.txController
     const noticeController = this.noticeController
     const addressBookController = this.addressBookController
+    const networkController = this.networkController
 
     return {
       // etc
       getState: (cb) => cb(null, this.getState()),
-      setProviderType: this.networkController.setProviderType.bind(this.networkController),
       setCurrentCurrency: this.setCurrentCurrency.bind(this),
       markAccountsFound: this.markAccountsFound.bind(this),
+
       // coinbase
       buyEth: this.buyEth.bind(this),
       // shapeshift
@@ -333,12 +334,15 @@ module.exports = class MetamaskController extends EventEmitter {
       // vault management
       submitPassword: this.submitPassword.bind(this),
 
+      // network management
+      setProviderType: nodeify(networkController.setProviderType, networkController),
+      setDefaultRpc: nodeify(this.setDefaultRpc, this),
+      setCustomRpc: nodeify(this.setCustomRpc, this),
+
       // PreferencesController
       setSelectedAddress: nodeify(preferencesController.setSelectedAddress, preferencesController),
       addToken: nodeify(preferencesController.addToken, preferencesController),
       setCurrentAccountTab: nodeify(preferencesController.setCurrentAccountTab, preferencesController),
-      setDefaultRpc: nodeify(this.setDefaultRpc, this),
-      setCustomRpc: nodeify(this.setCustomRpc, this),
 
       // AddressController
       setAddressBook: nodeify(addressBookController.setAddressBook, addressBookController),
@@ -689,19 +693,19 @@ module.exports = class MetamaskController extends EventEmitter {
   createShapeShiftTx (depositAddress, depositType) {
     this.shapeshiftController.createShapeShiftTx(depositAddress, depositType)
   }
-// network
 
-  setDefaultRpc () {
-    this.networkController.setRpcTarget('http://localhost:8545')
-    return Promise.resolve('http://localhost:8545')
+  // network
+
+  async setDefaultRpc () {
+    const localhost = 'http://localhost:8545'
+    this.networkController.setRpcTarget(localhost)
+    return localhost
   }
 
-  setCustomRpc (rpcTarget, rpcList) {
+  async setCustomRpc (rpcTarget, rpcList) {
     this.networkController.setRpcTarget(rpcTarget)
-
-    return this.preferencesController.updateFrequentRpcList(rpcTarget)
-    .then(() => {
-      return Promise.resolve(rpcTarget)
-    })
+    await this.preferencesController.updateFrequentRpcList(rpcTarget)
+    return rpcTarget
   }
+
 }
-- 
cgit 


From d6ea2fa425c90f6e05d2d59d4a79f1b573cc2e06 Mon Sep 17 00:00:00 2001
From: kumavis <aaron@kumavis.me>
Date: Fri, 29 Sep 2017 16:35:58 -0700
Subject: network - convert localhost from custom rpc to network type

---
 app/scripts/metamask-controller.js | 7 -------
 1 file changed, 7 deletions(-)

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

diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index fa6f1a245..eb978115d 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -336,7 +336,6 @@ module.exports = class MetamaskController extends EventEmitter {
 
       // network management
       setProviderType: nodeify(networkController.setProviderType, networkController),
-      setDefaultRpc: nodeify(this.setDefaultRpc, this),
       setCustomRpc: nodeify(this.setCustomRpc, this),
 
       // PreferencesController
@@ -696,12 +695,6 @@ module.exports = class MetamaskController extends EventEmitter {
 
   // network
 
-  async setDefaultRpc () {
-    const localhost = 'http://localhost:8545'
-    this.networkController.setRpcTarget(localhost)
-    return localhost
-  }
-
   async setCustomRpc (rpcTarget, rpcList) {
     this.networkController.setRpcTarget(rpcTarget)
     await this.preferencesController.updateFrequentRpcList(rpcTarget)
-- 
cgit 


From 8cc8fecdacb8dbc355e74bd6958ff4a4565b9346 Mon Sep 17 00:00:00 2001
From: Adam Novak <interfect@gmail.com>
Date: Sun, 1 Oct 2017 18:55:52 -0700
Subject: Don't pass origin as an HTTP header

Requests with this nonstandard header are being blocked by CORS when
made against Parity.

Not sending it ought to fix #1779.
---
 app/scripts/metamask-controller.js | 1 -
 1 file changed, 1 deletion(-)

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

diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index 03e021a92..1a468b6c7 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -221,7 +221,6 @@ module.exports = class MetamaskController extends EventEmitter {
         eth_syncing: false,
         web3_clientVersion: `MetaMask/v${version}`,
       },
-      originHttpHeaderKey: 'X-Metamask-Origin',
       // account mgmt
       getAccounts: (cb) => {
         const isUnlocked = this.keyringController.memStore.getState().isUnlocked
-- 
cgit