Skip to content

Commit f2dc20d

Browse files
committed
changes based on the review.
1 parent 78451b7 commit f2dc20d

File tree

3 files changed

+56
-16
lines changed

3 files changed

+56
-16
lines changed

app/scripts/controllers/mmi-controller.test.ts

+34-5
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,21 @@ jest.mock('./permissions', () => ({
4040
}),
4141
}));
4242

43+
export const createMockNetworkConfiguration = (
44+
override?: Partial<NetworkConfiguration>,
45+
): NetworkConfiguration => {
46+
return {
47+
chainId: CHAIN_IDS.SEPOLIA,
48+
blockExplorerUrls: [],
49+
defaultRpcEndpointIndex: 0,
50+
name: 'Mock Network',
51+
nativeCurrency: 'MOCK TOKEN',
52+
rpcEndpoints: [],
53+
defaultBlockExplorerUrlIndex: 0,
54+
...override,
55+
};
56+
};
57+
4358
const mockAccount = {
4459
address: '0x758b8178a9A4B7206d1f648c4a77C515Cbac7001',
4560
id: 'mock-id',
@@ -210,6 +225,20 @@ describe('MMIController', function () {
210225
InfuraNetworkType['sepolia'],
211226
);
212227

228+
controllerMessenger.registerActionHandler(
229+
'NetworkController:getNetworkClientById',
230+
jest.fn().mockReturnValue({
231+
configuration: {
232+
chainId: CHAIN_IDS.SEPOLIA,
233+
}
234+
}),
235+
);
236+
237+
controllerMessenger.registerActionHandler(
238+
'NetworkController:getNetworkConfigurationByChainId',
239+
jest.fn().mockReturnValue(createMockNetworkConfiguration()),
240+
);
241+
213242
const mmiControllerMessenger = controllerMessenger.getRestricted({
214243
name: 'MMIController',
215244
allowedActions: [
@@ -219,7 +248,9 @@ describe('MMIController', function () {
219248
'AccountsController:getSelectedAccount',
220249
'AccountsController:setSelectedAccount',
221250
'NetworkController:getState',
222-
'NetworkController:setActiveNetwork'
251+
'NetworkController:setActiveNetwork',
252+
'NetworkController:getNetworkClientById',
253+
'NetworkController:getNetworkConfigurationByChainId'
223254
],
224255
});
225256

@@ -508,9 +539,7 @@ describe('MMIController', function () {
508539
CUSTODIAN_TYPES['CUSTODIAN-TYPE'] = {
509540
keyringClass: { type: 'mock-keyring-class' },
510541
};
511-
mmiController.messagingSystem.call = jest
512-
.fn()
513-
.mockReturnValue({ address: '0x1' });
542+
jest.spyOn(ControllerMessenger.prototype, 'call').mockReturnValue({ address: '0x1' });
514543
mmiController.custodyController.getCustodyTypeByAddress = jest
515544
.fn()
516545
.mockReturnValue('custodian-type');
@@ -837,7 +866,7 @@ describe('MMIController', function () {
837866
'0x1',
838867
);
839868

840-
expect(selectedAccountSpy).toHaveBeenCalledTimes(1);
869+
expect(selectedAccountSpy).toHaveBeenCalledTimes(4);
841870
const selectedAccount = accountsController.getSelectedAccount();
842871
expect(selectedAccount.id).toBe(mockAccount.id);
843872
});

app/scripts/controllers/mmi-controller.ts

+13-10
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ import {
4242
ConnectionRequest,
4343
MMIControllerMessenger,
4444
} from '../../../shared/constants/mmi-controller';
45-
// TODO: Remove restricted import
46-
// eslint-disable-next-line import/no-restricted-paths
47-
import { getCurrentChainId } from '../../../ui/selectors';
4845
import MetaMetricsController from './metametrics';
4946
import { getPermissionBackgroundApiMethods } from './permissions';
5047
import AccountTrackerController from './account-tracker-controller';
@@ -866,15 +863,21 @@ export class MMIController {
866863
}
867864
}
868865

869-
const selectedChainId = getCurrentChainId({
870-
metamask: this.#networkControllerState,
871-
});
866+
const { selectedNetworkClientId } = this.messagingSystem.call(
867+
'NetworkController:getState',
868+
);
869+
const {
870+
configuration: { chainId: selectedChainId },
871+
} = this.messagingSystem.call(
872+
'NetworkController:getNetworkClientById',
873+
selectedNetworkClientId,
874+
);
872875

873876
if (selectedChainId !== toHex(chainId)) {
874-
const networkConfiguration =
875-
this.#networkControllerState.networkConfigurationsByChainId[
876-
toHex(chainId)
877-
];
877+
const networkConfiguration = this.messagingSystem.call(
878+
'NetworkController:getNetworkConfigurationByChainId',
879+
toHex(chainId),
880+
);
878881

879882
const { networkClientId } =
880883
networkConfiguration?.rpcEndpoints?.[

shared/constants/mmi-controller.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { CustodyController } from '@metamask-institutional/custody-controller';
55
import { SignatureController } from '@metamask/signature-controller';
66
import {
77
NetworkController,
8+
NetworkControllerGetNetworkClientByIdAction,
89
NetworkControllerGetStateAction,
910
NetworkControllerSetActiveNetworkAction,
1011
} from '@metamask/network-controller';
@@ -31,6 +32,11 @@ import MetaMetricsController from '../../app/scripts/controllers/metametrics';
3132
// Unique name for the controller
3233
const controllerName = 'MMIController';
3334

35+
type NetworkControllerGetNetworkConfigurationByChainId = {
36+
type: `NetworkController:getNetworkConfigurationByChainId`;
37+
handler: NetworkController['getNetworkConfigurationByChainId'];
38+
};
39+
3440
/**
3541
* Actions that this controller is allowed to call.
3642
*/
@@ -41,7 +47,9 @@ export type AllowedActions =
4147
| AccountsControllerGetSelectedAccountAction
4248
| AccountsControllerSetSelectedAccountAction
4349
| NetworkControllerGetStateAction
44-
| NetworkControllerSetActiveNetworkAction;
50+
| NetworkControllerSetActiveNetworkAction
51+
| NetworkControllerGetNetworkClientByIdAction
52+
| NetworkControllerGetNetworkConfigurationByChainId;
4553

4654
/**
4755
* Messenger type for the {@link MMIController}.

0 commit comments

Comments
 (0)