Merge pull request #971 from MetaMask/TearDownOnDisconnect

MetaMask Controller - Convert to EventEmitter
feature/default_network_editable
kumavis 8 years ago committed by GitHub
commit 906c3882bb
  1. 9
      app/scripts/background.js
  2. 10
      app/scripts/metamask-controller.js

@ -22,7 +22,6 @@ const controller = new MetamaskController({
setData,
loadData,
})
const keyringController = controller.keyringController
const txManager = controller.txManager
function triggerUi () {
if (!popupIsOpen) notification.show()
@ -81,13 +80,11 @@ function setupControllerConnection (stream) {
stream.pipe(dnode).pipe(stream)
dnode.on('remote', (remote) => {
// push updates to popup
controller.ethStore.on('update', controller.sendUpdate.bind(controller))
controller.listeners.push(remote)
keyringController.on('update', controller.sendUpdate.bind(controller))
var sendUpdate = remote.sendUpdate.bind(remote)
controller.on('update', sendUpdate)
// teardown on disconnect
eos(stream, () => {
controller.ethStore.removeListener('update', controller.sendUpdate.bind(controller))
controller.removeListener('update', sendUpdate)
popupIsOpen = false
})
})

@ -1,3 +1,4 @@
const EventEmitter = require('events')
const extend = require('xtend')
const EthStore = require('./lib/eth-store')
const MetaMaskProvider = require('web3-provider-engine/zero.js')
@ -13,12 +14,12 @@ const autoFaucet = require('./lib/auto-faucet')
const nodeify = require('./lib/nodeify')
const IdStoreMigrator = require('./lib/idStore-migrator')
module.exports = class MetamaskController {
module.exports = class MetamaskController extends EventEmitter {
constructor (opts) {
super()
this.state = { network: 'loading' }
this.opts = opts
this.listeners = []
this.configManager = new ConfigManager(opts)
this.keyringController = new KeyringController({
configManager: this.configManager,
@ -62,6 +63,7 @@ module.exports = class MetamaskController {
})
this.ethStore.on('update', this.sendUpdate.bind(this))
this.keyringController.on('update', this.sendUpdate.bind(this))
}
getState () {
@ -165,9 +167,7 @@ module.exports = class MetamaskController {
sendUpdate () {
this.getState()
.then((state) => {
this.listeners.forEach((remote) => {
remote.sendUpdate(state)
})
this.emit('update', state)
})
}

Loading…
Cancel
Save