Fix bug where reset account would not work.

Fixes #4462

Ensures that resetAccount() can work on non-stock providers.

I'm unclear how this was ever working, this code hasn't moved in months,
but users report it recently breaking. Maybe we only recently pushed it
to prod.
feature/default_network_editable
Dan Finlay 7 years ago
parent aea9491f6a
commit c53c5d5c9e
  1. 2
      CHANGELOG.md
  2. 11
      app/scripts/controllers/network/network.js
  3. 5
      app/scripts/metamask-controller.js

@ -2,6 +2,8 @@
## Current Master ## Current Master
- Fix bug where account reset did not work with custom RPC providers.
## 4.7.4 Tue Jun 05 2018 ## 4.7.4 Tue Jun 05 2018
- Add diagnostic reporting for users with multiple HD keyrings - Add diagnostic reporting for users with multiple HD keyrings

@ -89,14 +89,21 @@ module.exports = class NetworkController extends EventEmitter {
type: 'rpc', type: 'rpc',
rpcTarget, rpcTarget,
} }
this.providerStore.updateState(providerConfig) this.providerConfig = providerConfig
this._switchNetwork(providerConfig)
} }
async setProviderType (type) { async setProviderType (type) {
assert.notEqual(type, 'rpc', `NetworkController - cannot call "setProviderType" with type 'rpc'. use "setRpcTarget"`) assert.notEqual(type, 'rpc', `NetworkController - cannot call "setProviderType" with type 'rpc'. use "setRpcTarget"`)
assert(INFURA_PROVIDER_TYPES.includes(type) || type === LOCALHOST, `NetworkController - Unknown rpc type "${type}"`) assert(INFURA_PROVIDER_TYPES.includes(type) || type === LOCALHOST, `NetworkController - Unknown rpc type "${type}"`)
const providerConfig = { type } const providerConfig = { type }
this.providerConfig = providerConfig
}
resetConnection () {
this.providerConfig = this.getProviderConfig()
}
set providerConfig (providerConfig) {
this.providerStore.updateState(providerConfig) this.providerStore.updateState(providerConfig)
this._switchNetwork(providerConfig) this._switchNetwork(providerConfig)
} }

@ -628,10 +628,7 @@ module.exports = class MetamaskController extends EventEmitter {
async resetAccount () { async resetAccount () {
const selectedAddress = this.preferencesController.getSelectedAddress() const selectedAddress = this.preferencesController.getSelectedAddress()
this.txController.wipeTransactions(selectedAddress) this.txController.wipeTransactions(selectedAddress)
this.networkController.resetConnection()
const networkController = this.networkController
const oldType = networkController.getProviderConfig().type
await networkController.setProviderType(oldType, true)
return selectedAddress return selectedAddress
} }

Loading…
Cancel
Save