1- import type { RestrictedMessenger } from '@metamask/base-controller' ;
2- import { BaseController } from '@metamask/base-controller' ;
1+ import {
2+ BaseController ,
3+ type ControllerGetStateAction ,
4+ type ControllerStateChangeEvent ,
5+ } from '@metamask/base-controller/next' ;
6+ import type { Messenger } from '@metamask/messenger' ;
37import type {
48 BlockTrackerProxy ,
59 NetworkClientId ,
@@ -16,9 +20,8 @@ import type {
1620} from '@metamask/permission-controller' ;
1721import { createEventEmitterProxy } from '@metamask/swappable-obj-proxy' ;
1822import type { Hex } from '@metamask/utils' ;
19- import type { Patch } from 'immer' ;
2023
21- export const controllerName = 'SelectedNetworkController' ;
24+ const controllerName = 'SelectedNetworkController' ;
2225
2326const stateMetadata = {
2427 domains : { persist : true , anonymous : false } ,
@@ -46,15 +49,17 @@ export type SelectedNetworkControllerState = {
4649 domains : Record < Domain , NetworkClientId > ;
4750} ;
4851
49- export type SelectedNetworkControllerStateChangeEvent = {
50- type : typeof SelectedNetworkControllerEventTypes . stateChange ;
51- payload : [ SelectedNetworkControllerState , Patch [ ] ] ;
52- } ;
52+ export type SelectedNetworkControllerStateChangeEvent =
53+ ControllerStateChangeEvent <
54+ typeof controllerName ,
55+ SelectedNetworkControllerState
56+ > ;
5357
54- export type SelectedNetworkControllerGetSelectedNetworkStateAction = {
55- type : typeof SelectedNetworkControllerActionTypes . getState ;
56- handler : ( ) => SelectedNetworkControllerState ;
57- } ;
58+ export type SelectedNetworkControllerGetSelectedNetworkStateAction =
59+ ControllerGetStateAction <
60+ typeof controllerName ,
61+ SelectedNetworkControllerState
62+ > ;
5863
5964export type SelectedNetworkControllerGetNetworkClientIdForDomainAction = {
6065 type : typeof SelectedNetworkControllerActionTypes . getNetworkClientIdForDomain ;
@@ -71,7 +76,7 @@ export type SelectedNetworkControllerActions =
7176 | SelectedNetworkControllerGetNetworkClientIdForDomainAction
7277 | SelectedNetworkControllerSetNetworkClientIdForDomainAction ;
7378
74- export type AllowedActions =
79+ type AllowedActions =
7580 | NetworkControllerGetNetworkClientByIdAction
7681 | NetworkControllerGetSelectedNetworkClientAction
7782 | NetworkControllerGetStateAction
@@ -81,16 +86,14 @@ export type AllowedActions =
8186export type SelectedNetworkControllerEvents =
8287 SelectedNetworkControllerStateChangeEvent ;
8388
84- export type AllowedEvents =
89+ type AllowedEvents =
8590 | NetworkControllerStateChangeEvent
8691 | PermissionControllerStateChange ;
8792
88- export type SelectedNetworkControllerMessenger = RestrictedMessenger <
93+ export type SelectedNetworkControllerMessenger = Messenger <
8994 typeof controllerName ,
9095 SelectedNetworkControllerActions | AllowedActions ,
91- SelectedNetworkControllerEvents | AllowedEvents ,
92- AllowedActions [ 'type' ] ,
93- AllowedEvents [ 'type' ]
96+ SelectedNetworkControllerEvents | AllowedEvents
9497> ;
9598
9699export type SelectedNetworkControllerOptions = {
@@ -124,7 +127,7 @@ export class SelectedNetworkController extends BaseController<
124127 * Construct a SelectedNetworkController controller.
125128 *
126129 * @param options - The controller options.
127- * @param options.messenger - The restricted messenger for the EncryptionPublicKey controller.
130+ * @param options.messenger - The messenger for the SelectedNetworkController controller.
128131 * @param options.state - The controllers initial state.
129132 * @param options.useRequestQueuePreference - A boolean indicating whether to use the request queue preference.
130133 * @param options.onPreferencesStateChange - A callback that is called when the preference state changes.
@@ -148,18 +151,18 @@ export class SelectedNetworkController extends BaseController<
148151 this . #registerMessageHandlers( ) ;
149152
150153 // this is fetching all the dapp permissions from the PermissionsController and looking for any domains that are not in domains state in this controller. Then we take any missing domains and add them to state here, setting it with the globally selected networkClientId (fetched from the NetworkController)
151- this . messagingSystem
154+ this . messenger
152155 . call ( 'PermissionController:getSubjectNames' )
153156 . filter ( ( domain ) => this . state . domains [ domain ] === undefined )
154157 . forEach ( ( domain ) =>
155158 this . setNetworkClientIdForDomain (
156159 domain ,
157- this . messagingSystem . call ( 'NetworkController:getState' )
160+ this . messenger . call ( 'NetworkController:getState' )
158161 . selectedNetworkClientId ,
159162 ) ,
160163 ) ;
161164
162- this . messagingSystem . subscribe (
165+ this . messenger . subscribe (
163166 'PermissionController:stateChange' ,
164167 ( _ , patches ) => {
165168 patches . forEach ( ( { op, path } ) => {
@@ -170,7 +173,7 @@ export class SelectedNetworkController extends BaseController<
170173 if ( op === 'add' && this . state . domains [ domain ] === undefined ) {
171174 this . setNetworkClientIdForDomain (
172175 domain ,
173- this . messagingSystem . call ( 'NetworkController:getState' )
176+ this . messenger . call ( 'NetworkController:getState' )
174177 . selectedNetworkClientId ,
175178 ) ;
176179 } else if (
@@ -184,7 +187,7 @@ export class SelectedNetworkController extends BaseController<
184187 } ,
185188 ) ;
186189
187- this . messagingSystem . subscribe (
190+ this . messenger . subscribe (
188191 'NetworkController:stateChange' ,
189192 (
190193 { selectedNetworkClientId, networkConfigurationsByChainId } ,
@@ -199,12 +202,16 @@ export class SelectedNetworkController extends BaseController<
199202 if ( patch ) {
200203 const networkClientIdToChainId = Object . values (
201204 networkConfigurationsByChainId ,
202- ) . reduce ( ( acc , network ) => {
203- network . rpcEndpoints . forEach (
204- ( { networkClientId } ) => ( acc [ networkClientId ] = network . chainId ) ,
205- ) ;
206- return acc ;
207- } , { } as Record < string , Hex > ) ;
205+ ) . reduce (
206+ ( acc , network ) => {
207+ network . rpcEndpoints . forEach (
208+ ( { networkClientId } ) =>
209+ ( acc [ networkClientId ] = network . chainId ) ,
210+ ) ;
211+ return acc ;
212+ } ,
213+ { } as Record < string , Hex > ,
214+ ) ;
208215
209216 Object . entries ( this . state . domains ) . forEach (
210217 ( [ domain , networkClientIdForDomain ] ) => {
@@ -259,11 +266,11 @@ export class SelectedNetworkController extends BaseController<
259266 }
260267
261268 #registerMessageHandlers( ) : void {
262- this . messagingSystem . registerActionHandler (
269+ this . messenger . registerActionHandler (
263270 SelectedNetworkControllerActionTypes . getNetworkClientIdForDomain ,
264271 this . getNetworkClientIdForDomain . bind ( this ) ,
265272 ) ;
266- this . messagingSystem . registerActionHandler (
273+ this . messenger . registerActionHandler (
267274 SelectedNetworkControllerActionTypes . setNetworkClientIdForDomain ,
268275 this . setNetworkClientIdForDomain . bind ( this ) ,
269276 ) ;
@@ -273,7 +280,7 @@ export class SelectedNetworkController extends BaseController<
273280 domain : Domain ,
274281 networkClientId : NetworkClientId ,
275282 ) {
276- const networkClient = this . messagingSystem . call (
283+ const networkClient = this . messenger . call (
277284 'NetworkController:getNetworkClientById' ,
278285 networkClientId ,
279286 ) ;
@@ -296,7 +303,7 @@ export class SelectedNetworkController extends BaseController<
296303 * @param domain - The domain for which to unset the network client ID.
297304 */
298305 #unsetNetworkClientIdForDomain( domain : Domain ) {
299- const globallySelectedNetworkClient = this . messagingSystem . call (
306+ const globallySelectedNetworkClient = this . messenger . call (
300307 'NetworkController:getSelectedNetworkClient' ,
301308 ) ;
302309 const networkProxy = this . #domainProxyMap. get ( domain ) ;
@@ -314,18 +321,15 @@ export class SelectedNetworkController extends BaseController<
314321 }
315322
316323 #domainHasPermissions( domain : Domain ) : boolean {
317- return this . messagingSystem . call (
318- 'PermissionController:hasPermissions' ,
319- domain ,
320- ) ;
324+ return this . messenger . call ( 'PermissionController:hasPermissions' , domain ) ;
321325 }
322326
323327 // Loop through all domains and for those with permissions it points that domain's proxy
324328 // to an unproxied instance of the globally selected network client.
325329 // NOT the NetworkController's proxy of the globally selected networkClient
326330 #resetAllPermissionedDomains( ) {
327331 this . #domainProxyMap. forEach ( ( _ : NetworkProxy , domain : string ) => {
328- const { selectedNetworkClientId } = this . messagingSystem . call (
332+ const { selectedNetworkClientId } = this . messenger . call (
329333 'NetworkController:getState' ,
330334 ) ;
331335 // can't use public setNetworkClientIdForDomain because it will throw an error
@@ -362,7 +366,7 @@ export class SelectedNetworkController extends BaseController<
362366
363367 getNetworkClientIdForDomain ( domain : Domain ) : NetworkClientId {
364368 const { selectedNetworkClientId : metamaskSelectedNetworkClientId } =
365- this . messagingSystem . call ( 'NetworkController:getState' ) ;
369+ this . messenger . call ( 'NetworkController:getState' ) ;
366370 if ( ! this . #useRequestQueuePreference) {
367371 return metamaskSelectedNetworkClientId ;
368372 }
@@ -378,7 +382,7 @@ export class SelectedNetworkController extends BaseController<
378382 getProviderAndBlockTracker ( domain : Domain ) : NetworkProxy {
379383 // If the domain is 'metamask', return the NetworkController's globally selected network client proxy
380384 if ( domain === METAMASK_DOMAIN ) {
381- const networkClient = this . messagingSystem . call (
385+ const networkClient = this . messenger . call (
382386 'NetworkController:getSelectedNetworkClient' ,
383387 ) ;
384388 if ( networkClient === undefined ) {
@@ -395,12 +399,12 @@ export class SelectedNetworkController extends BaseController<
395399 this . #domainHasPermissions( domain )
396400 ) {
397401 const networkClientId = this . getNetworkClientIdForDomain ( domain ) ;
398- networkClient = this . messagingSystem . call (
402+ networkClient = this . messenger . call (
399403 'NetworkController:getNetworkClientById' ,
400404 networkClientId ,
401405 ) ;
402406 } else {
403- networkClient = this . messagingSystem . call (
407+ networkClient = this . messenger . call (
404408 'NetworkController:getSelectedNetworkClient' ,
405409 ) ;
406410 if ( networkClient === undefined ) {
0 commit comments