-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Expand file tree
/
Copy pathaccount-tracker-controller-init.ts
More file actions
49 lines (46 loc) · 1.74 KB
/
Copy pathaccount-tracker-controller-init.ts
File metadata and controls
49 lines (46 loc) · 1.74 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
46
47
48
49
import { MessengerClientInitFunction } from '../types';
import {
AccountTrackerController,
AccountTrackerControllerMessenger,
} from '@metamask/assets-controllers';
import { selectAssetsAccountApiBalancesEnabled } from '../../../selectors/featureFlagController/assetsAccountApiBalances';
import { selectBasicFunctionalityEnabled } from '../../../selectors/settings';
import { selectIsControllerDeprecated } from '../../../selectors/featureFlagController/assetsUnifyState';
import { store } from '../../../store';
/**
* Initialize the accountTracker controller.
*
* @param request - The request object.
* @param request.controllerMessenger - The messenger to use for the controller.
* @returns The initialized controller.
*/
export const accountTrackerControllerInit: MessengerClientInitFunction<
AccountTrackerController,
AccountTrackerControllerMessenger
> = ({ controllerMessenger, persistedState, getMessengerClient, getState }) => {
const assetsContractController = getMessengerClient(
'AssetsContractController',
);
const controller = new AccountTrackerController({
messenger: controllerMessenger,
state: persistedState.AccountTrackerController ?? {
accountsByChainId: {},
},
includeStakedAssets: true,
getStakedBalanceForChain:
assetsContractController.getStakedBalanceForChain.bind(
assetsContractController,
),
accountsApiChainIds: () =>
selectAssetsAccountApiBalancesEnabled(getState()) as `0x${string}`[],
allowExternalServices: () => selectBasicFunctionalityEnabled(getState()),
isHomepageSectionsV1Enabled: () => true,
isDeprecated: () =>
selectIsControllerDeprecated('AccountTrackerController')(
store.getState(),
),
});
return {
controller,
};
};