mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Merge pull request #971 from MetaMask/TearDownOnDisconnect
MetaMask Controller - Convert to EventEmitter
This commit is contained in:
commit
906c3882bb
@ -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…
Reference in New Issue
Block a user