-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Expand file tree
/
Copy pathtokens-controller-init.ts
More file actions
45 lines (41 loc) · 1.3 KB
/
tokens-controller-init.ts
File metadata and controls
45 lines (41 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { MessengerClientInitFunction } from '../types';
import {
TokensController,
type TokensControllerMessenger,
} from '@metamask/assets-controllers';
import { TokensControllerInitMessenger } from '../messengers/tokens-controller-messenger';
import { getGlobalChainId } from '../../../util/networks/global-network';
import { assert } from '@metamask/utils';
/**
* Initialize the tokens controller.
*
* @param request - The request object.
* @param request.controllerMessenger - The messenger to use for the controller.
* @returns The initialized controller.
*/
export const tokensControllerInit: MessengerClientInitFunction<
TokensController,
TokensControllerMessenger,
TokensControllerInitMessenger
> = ({
controllerMessenger,
initMessenger,
persistedState,
getMessengerClient,
tokenListService,
}) => {
const networkController = getMessengerClient('NetworkController');
const { provider } =
initMessenger.call('NetworkController:getSelectedNetworkClient') ?? {};
assert(provider, 'Provider is required to initialize `TokensController`.');
const controller = new TokensController({
state: persistedState.TokensController,
messenger: controllerMessenger,
chainId: getGlobalChainId(networkController),
provider,
tokenListService,
});
return {
controller,
};
};