Skip to content

Commit c75fb3b

Browse files
committed
Replace network-controller getProviderConfig, findNetworkClientIdByChainId actions with getState, getNetworkClientById
1 parent a1c7660 commit c75fb3b

3 files changed

Lines changed: 63 additions & 38 deletions

File tree

packages/assets-controllers/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
### Added
1111

1212
- **BREAKING:** Adds `@metamask/accounts-controller` ^8.0.0 and `@metamask/keyring-controller` ^12.0.0 as dependencies and peer dependencies. ([#3775](https://github.com/MetaMask/core/pull/3775/)).
13-
- **BREAKING:** `TokenDetectionController` newly subscribes to the `PreferencesController:stateChange`, `AccountsController:selectedAccountChange`, `KeyringController:lock`, `KeyringController:unlock` events, and allows messenger actions `AccountsController:getSelectedAccount`, `NetworkController:findNetworkClientIdByChainId`, `NetworkController:getNetworkConfigurationByNetworkClientId`, `NetworkController:getProviderConfig`, `KeyringController:getState`, `PreferencesController:getState`, `TokenListController:getState`, `TokensController:getState`, `TokensController:addDetectedTokens`. ([#3775](https://github.com/MetaMask/core/pull/3775/)), ([#3923](https://github.com/MetaMask/core/pull/3923/))
13+
- **BREAKING:** `TokenDetectionController` newly subscribes to the `PreferencesController:stateChange`, `AccountsController:selectedAccountChange`, `KeyringController:lock`, `KeyringController:unlock` events, and allows messenger actions `AccountsController:getSelectedAccount`, `NetworkController:getNetworkClientById`, `NetworkController:getNetworkConfigurationByNetworkClientId`, `NetworkController:getState`, `KeyringController:getState`, `PreferencesController:getState`, `TokenListController:getState`, `TokensController:getState`, `TokensController:addDetectedTokens`. ([#3775](https://github.com/MetaMask/core/pull/3775/)), ([#3923](https://github.com/MetaMask/core/pull/3923/), [#3938](https://github.com/MetaMask/core/pull/3938))
1414
- `TokensController` now exports `TokensControllerActions`, `TokensControllerGetStateAction`, `TokensControllerAddDetectedTokensAction`, `TokensControllerEvents`, `TokensControllerStateChangeEvent`. ([#3690](https://github.com/MetaMask/core/pull/3690/))
1515

1616
### Changed

packages/assets-controllers/src/TokenDetectionController.test.ts

Lines changed: 50 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import type {
1212
NetworkState,
1313
NetworkConfiguration,
1414
NetworkController,
15-
ProviderConfig,
1615
NetworkClientId,
1716
} from '@metamask/network-controller';
1817
import { defaultState as defaultNetworkState } from '@metamask/network-controller';
@@ -45,6 +44,9 @@ import {
4544
} from './TokenListController';
4645
import type { TokensController, TokensState } from './TokensController';
4746
import { getDefaultTokensState } from './TokensController';
47+
import { NetworkClient } from '@metamask/network-controller';
48+
import { AutoManagedNetworkClient } from '@metamask/network-controller/src/create-auto-managed-network-client';
49+
import { CustomNetworkClientConfiguration } from '@metamask/network-controller/src/types';
4850

4951
const DEFAULT_INTERVAL = 180000;
5052

@@ -142,9 +144,9 @@ function buildTokenDetectionControllerMessenger(
142144
allowedActions: [
143145
'AccountsController:getSelectedAccount',
144146
'KeyringController:getState',
145-
'NetworkController:findNetworkClientIdByChainId',
147+
'NetworkController:getNetworkClientById',
146148
'NetworkController:getNetworkConfigurationByNetworkClientId',
147-
'NetworkController:getProviderConfig',
149+
'NetworkController:getState',
148150
'TokensController:getState',
149151
'TokensController:addDetectedTokens',
150152
'TokenListController:getState',
@@ -345,13 +347,21 @@ describe('TokenDetectionController', () => {
345347
},
346348
async ({
347349
controller,
348-
mockGetProviderConfig,
349350
mockTokenListGetState,
351+
mockNetworkState,
352+
mockGetNetworkClientById,
350353
callActionSpy,
351354
}) => {
352-
mockGetProviderConfig({
353-
chainId: '0x89',
354-
} as unknown as ProviderConfig);
355+
mockNetworkState({
356+
...defaultNetworkState,
357+
selectedNetworkClientId: 'polygon',
358+
});
359+
mockGetNetworkClientById(
360+
(networkClientId) =>
361+
({
362+
configuration: { chainId: '0x89' },
363+
} as unknown as AutoManagedNetworkClient<CustomNetworkClientConfiguration>),
364+
);
355365

356366
mockTokenListGetState({
357367
...getDefaultTokenListState(),
@@ -1997,9 +2007,9 @@ type WithControllerCallback<ReturnValue> = ({
19972007
mockTokensGetState,
19982008
mockTokenListGetState,
19992009
mockPreferencesGetState,
2000-
mockFindNetworkClientIdByChainId,
2010+
mockGetNetworkClientById,
20012011
mockGetNetworkConfigurationByNetworkClientId,
2002-
mockGetProviderConfig,
2012+
mockNetworkState,
20032013
callActionSpy,
20042014
triggerKeyringUnlock,
20052015
triggerKeyringLock,
@@ -2014,13 +2024,15 @@ type WithControllerCallback<ReturnValue> = ({
20142024
mockTokensGetState: (state: TokensState) => void;
20152025
mockTokenListGetState: (state: TokenListState) => void;
20162026
mockPreferencesGetState: (state: PreferencesState) => void;
2017-
mockFindNetworkClientIdByChainId: (
2018-
handler: (chainId: Hex) => NetworkClientId,
2027+
mockGetNetworkClientById: (
2028+
handler: (
2029+
networkClientId: NetworkClientId,
2030+
) => AutoManagedNetworkClient<CustomNetworkClientConfiguration>,
20192031
) => void;
20202032
mockGetNetworkConfigurationByNetworkClientId: (
2021-
handler: (networkClientId: string) => NetworkConfiguration,
2033+
handler: (networkClientId: NetworkClientId) => NetworkConfiguration,
20222034
) => void;
2023-
mockGetProviderConfig: (config: ProviderConfig) => void;
2035+
mockNetworkState: (state: NetworkState) => void;
20242036
callActionSpy: jest.SpyInstance;
20252037
triggerKeyringUnlock: () => void;
20262038
triggerKeyringLock: () => void;
@@ -2071,10 +2083,22 @@ async function withController<ReturnValue>(
20712083
isUnlocked: isKeyringUnlocked ?? true,
20722084
} as KeyringControllerState),
20732085
);
2074-
const mockFindNetworkClientIdByChainId = jest.fn<NetworkClientId, [Hex]>();
2086+
const mockGetNetworkClientById = jest.fn<
2087+
ReturnType<NetworkController['getNetworkClientById']>,
2088+
Parameters<NetworkController['getNetworkClientById']>
2089+
>();
20752090
controllerMessenger.registerActionHandler(
2076-
'NetworkController:findNetworkClientIdByChainId',
2077-
mockFindNetworkClientIdByChainId.mockReturnValue(NetworkType.mainnet),
2091+
'NetworkController:getNetworkClientById',
2092+
mockGetNetworkClientById.mockImplementation(
2093+
(networkClientId: NetworkClientId) => {
2094+
return {
2095+
configuration: { chainId: '0x1' },
2096+
provider: {},
2097+
destroy: {},
2098+
blockTracker: {},
2099+
} as unknown as AutoManagedNetworkClient<CustomNetworkClientConfiguration>;
2100+
},
2101+
),
20782102
);
20792103
const mockGetNetworkConfigurationByNetworkClientId = jest.fn<
20802104
ReturnType<NetworkController['getNetworkConfigurationByNetworkClientId']>,
@@ -2088,13 +2112,10 @@ async function withController<ReturnValue>(
20882112
},
20892113
),
20902114
);
2091-
const mockGetProviderConfig = jest.fn<ProviderConfig, []>();
2115+
const mockNetworkState = jest.fn<NetworkState, []>();
20922116
controllerMessenger.registerActionHandler(
2093-
'NetworkController:getProviderConfig',
2094-
mockGetProviderConfig.mockReturnValue({
2095-
type: NetworkType.mainnet,
2096-
chainId: '0x1',
2097-
} as unknown as ProviderConfig),
2117+
'NetworkController:getState',
2118+
mockNetworkState.mockReturnValue({ ...defaultNetworkState }),
20982119
);
20992120
const mockTokensState = jest.fn<TokensState, []>();
21002121
controllerMessenger.registerActionHandler(
@@ -2149,10 +2170,12 @@ async function withController<ReturnValue>(
21492170
mockTokenListGetState: (state: TokenListState) => {
21502171
mockTokenListState.mockReturnValue(state);
21512172
},
2152-
mockFindNetworkClientIdByChainId: (
2153-
handler: (chainId: Hex) => NetworkClientId,
2173+
mockGetNetworkClientById: (
2174+
handler: (
2175+
networkClientId: NetworkClientId,
2176+
) => AutoManagedNetworkClient<CustomNetworkClientConfiguration>,
21542177
) => {
2155-
mockFindNetworkClientIdByChainId.mockImplementation(handler);
2178+
mockGetNetworkClientById.mockImplementation(handler);
21562179
},
21572180
mockGetNetworkConfigurationByNetworkClientId: (
21582181
handler: (networkClientId: NetworkClientId) => NetworkConfiguration,
@@ -2161,8 +2184,8 @@ async function withController<ReturnValue>(
21612184
handler,
21622185
);
21632186
},
2164-
mockGetProviderConfig: (config: ProviderConfig) => {
2165-
mockGetProviderConfig.mockReturnValue(config);
2187+
mockNetworkState: (state: NetworkState) => {
2188+
mockNetworkState.mockReturnValue(state);
21662189
},
21672190
callActionSpy,
21682191
triggerKeyringUnlock: () => {

packages/assets-controllers/src/TokenDetectionController.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import type {
1616
} from '@metamask/keyring-controller';
1717
import type {
1818
NetworkClientId,
19-
NetworkControllerFindNetworkClientIdByChainIdAction,
19+
NetworkControllerGetNetworkClientByIdAction,
2020
NetworkControllerGetNetworkConfigurationByNetworkClientId,
21-
NetworkControllerGetProviderConfigAction,
21+
NetworkControllerGetStateAction,
2222
NetworkControllerNetworkDidChangeEvent,
2323
} from '@metamask/network-controller';
2424
import { StaticIntervalPollingController } from '@metamask/polling-controller';
@@ -105,9 +105,9 @@ export type TokenDetectionControllerActions =
105105

106106
export type AllowedActions =
107107
| AccountsControllerGetSelectedAccountAction
108-
| NetworkControllerFindNetworkClientIdByChainIdAction
108+
| NetworkControllerGetNetworkClientByIdAction
109109
| NetworkControllerGetNetworkConfigurationByNetworkClientId
110-
| NetworkControllerGetProviderConfigAction
110+
| NetworkControllerGetStateAction
111111
| GetTokenListState
112112
| KeyringControllerGetStateAction
113113
| PreferencesControllerGetStateAction
@@ -427,16 +427,18 @@ export class TokenDetectionController extends StaticIntervalPollingController<
427427
};
428428
}
429429
}
430-
const { chainId } = this.messagingSystem.call(
431-
'NetworkController:getProviderConfig',
430+
const { selectedNetworkClientId } = this.messagingSystem.call(
431+
'NetworkController:getState',
432432
);
433-
const newNetworkClientId = this.messagingSystem.call(
434-
'NetworkController:findNetworkClientIdByChainId',
435-
chainId,
433+
const {
434+
configuration: { chainId },
435+
} = this.messagingSystem.call(
436+
'NetworkController:getNetworkClientById',
437+
selectedNetworkClientId,
436438
);
437439
return {
438440
chainId,
439-
networkClientId: newNetworkClientId,
441+
networkClientId: selectedNetworkClientId,
440442
};
441443
}
442444

0 commit comments

Comments
 (0)