@@ -4,6 +4,7 @@ const ObservableStore = require('obs-store')
44const ComposedStore = require ( 'obs-store/lib/composed' )
55const extend = require ( 'xtend' )
66const EthQuery = require ( 'eth-query' )
7+ const createEventEmitterProxy = require ( '../lib/events-proxy.js' )
78const RPC_ADDRESS_LIST = require ( '../config.js' ) . network
89const DEFAULT_RPC = RPC_ADDRESS_LIST [ 'rinkeby' ]
910
@@ -31,16 +32,8 @@ module.exports = class NetworkController extends EventEmitter {
3132 initializeProvider ( opts , providerContructor = MetaMaskProvider ) {
3233 this . providerInit = opts
3334 this . _provider = providerContructor ( opts )
34- this . _proxy = new Proxy ( this . _provider , {
35- get : ( obj , name ) => {
36- if ( name === 'on' ) return this . _on . bind ( this )
37- return this . _provider [ name ]
38- } ,
39- set : ( obj , name , value ) => {
40- this . _provider [ name ] = value
41- return value
42- } ,
43- } )
35+ this . _proxy = createEventEmitterProxy ( this . _provider )
36+ this . provider . _blockTracker = createEventEmitterProxy ( this . _provider . _blockTracker )
4437 this . provider . on ( 'block' , this . _logBlock . bind ( this ) )
4538 this . provider . on ( 'error' , this . verifyNetwork . bind ( this ) )
4639 this . ethQuery = new EthQuery ( this . provider )
@@ -55,11 +48,11 @@ module.exports = class NetworkController extends EventEmitter {
5548
5649 this . _provider . removeAllListeners ( )
5750 this . _provider . stop ( )
58- this . provider = MetaMaskProvider ( newInit )
51+ this . _provider = MetaMaskProvider ( newInit )
5952 // apply the listners created by other controllers
60- Object . keys ( this . _providerListeners ) . forEach ( ( key ) => {
61- this . _providerListeners [ key ] . forEach ( ( handler ) => this . _provider . addListener ( key , handler ) )
62- } )
53+ const blockTrackerHandlers = this . provider . _blockTracker . proxyEventHandlers
54+ this . provider . setTarget ( this . _provider )
55+ this . provider . _blockTracker = createEventEmitterProxy ( this . _provider . _blockTracker , blockTrackerHandlers )
6356 this . emit ( 'networkDidChange' )
6457 }
6558
@@ -121,10 +114,4 @@ module.exports = class NetworkController extends EventEmitter {
121114 log . info ( `BLOCK CHANGED: #${ block . number . toString ( 'hex' ) } 0x${ block . hash . toString ( 'hex' ) } ` )
122115 this . verifyNetwork ( )
123116 }
124-
125- _on ( event , handler ) {
126- if ( ! this . _providerListeners [ event ] ) this . _providerListeners [ event ] = [ ]
127- this . _providerListeners [ event ] . push ( handler )
128- this . _provider . on ( event , handler )
129- }
130117}
0 commit comments