@@ -2,13 +2,18 @@ import { strict as assert } from 'assert';
22import EventEmitter from 'events' ;
33import { ComposedStore , ObservableStore } from '@metamask/obs-store' ;
44import { JsonRpcEngine } from 'json-rpc-engine' ;
5- import { providerFromEngine } from 'eth-json-rpc-middleware' ;
5+ import {
6+ providerFromEngine ,
7+ providerFromMiddleware ,
8+ } from 'eth-json-rpc-middleware' ;
69import log from 'loglevel' ;
710import {
811 createSwappableProxy ,
912 createEventEmitterProxy ,
1013} from 'swappable-obj-proxy' ;
1114import EthQuery from 'eth-query' ;
15+ import createFilterMiddleware from 'eth-json-rpc-filters' ;
16+ import createSubscriptionManager from 'eth-json-rpc-filters/subscriptionManager' ;
1217import {
1318 INFURA_PROVIDER_TYPES ,
1419 BUILT_IN_NETWORKS ,
@@ -424,19 +429,31 @@ export default class NetworkController extends EventEmitter {
424429 this . _setNetworkClient ( networkClient ) ;
425430 }
426431
427- _setNetworkClient ( { networkMiddleware, blockTracker, subscriptionManager } ) {
432+ _setNetworkClient ( { networkMiddleware, blockTracker } ) {
433+ const networkProvider = providerFromMiddleware ( networkMiddleware ) ;
434+ const filterMiddleware = createFilterMiddleware ( {
435+ provider : networkProvider ,
436+ blockTracker,
437+ } ) ;
438+ const subscriptionManager = createSubscriptionManager ( {
439+ provider : networkProvider ,
440+ blockTracker,
441+ } ) ;
428442 const metamaskMiddleware = createMetamaskMiddleware (
429443 this . _baseProviderParams ,
430444 ) ;
431- const engine = new JsonRpcEngine ( ) ;
432445
446+ const engine = new JsonRpcEngine ( ) ;
433447 subscriptionManager . events . on ( 'notification' , ( message ) =>
434448 engine . emit ( 'notification' , message ) ,
435449 ) ;
436-
450+ engine . push ( filterMiddleware ) ;
451+ engine . push ( subscriptionManager . middleware ) ;
437452 engine . push ( metamaskMiddleware ) ;
438453 engine . push ( networkMiddleware ) ;
454+
439455 const provider = providerFromEngine ( engine ) ;
456+
440457 this . _setProviderAndBlockTracker ( { provider, blockTracker } ) ;
441458 }
442459
0 commit comments