@metamask/assets-controllers 94.0.0 → 95.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +71 -1
- package/dist/AccountTrackerController.cjs +85 -56
- package/dist/AccountTrackerController.cjs.map +1 -1
- package/dist/AccountTrackerController.d.cts +15 -7
- package/dist/AccountTrackerController.d.cts.map +1 -1
- package/dist/AccountTrackerController.d.mts +15 -7
- package/dist/AccountTrackerController.d.mts.map +1 -1
- package/dist/AccountTrackerController.mjs +85 -56
- package/dist/AccountTrackerController.mjs.map +1 -1
- package/dist/CurrencyRateController.d.cts +2 -2
- package/dist/CurrencyRateController.d.mts +2 -2
- package/dist/DeFiPositionsController/DeFiPositionsController.d.cts +2 -2
- package/dist/DeFiPositionsController/DeFiPositionsController.d.mts +2 -2
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs +8 -2
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts +2 -2
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts +2 -2
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs +8 -2
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs.map +1 -1
- package/dist/TokenBalancesController.cjs +351 -382
- package/dist/TokenBalancesController.cjs.map +1 -1
- package/dist/TokenBalancesController.d.cts +22 -41
- package/dist/TokenBalancesController.d.cts.map +1 -1
- package/dist/TokenBalancesController.d.mts +22 -41
- package/dist/TokenBalancesController.d.mts.map +1 -1
- package/dist/TokenBalancesController.mjs +351 -382
- package/dist/TokenBalancesController.mjs.map +1 -1
- package/dist/TokenDetectionController.cjs +139 -207
- package/dist/TokenDetectionController.cjs.map +1 -1
- package/dist/TokenDetectionController.d.cts +40 -14
- package/dist/TokenDetectionController.d.cts.map +1 -1
- package/dist/TokenDetectionController.d.mts +40 -14
- package/dist/TokenDetectionController.d.mts.map +1 -1
- package/dist/TokenDetectionController.mjs +140 -208
- package/dist/TokenDetectionController.mjs.map +1 -1
- package/dist/TokenListController.d.cts +2 -2
- package/dist/TokenListController.d.mts +2 -2
- package/dist/TokenRatesController.d.cts +2 -2
- package/dist/TokenRatesController.d.mts +2 -2
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs +13 -2
- package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.d.cts.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.d.mts.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs +13 -2
- package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs.map +1 -1
- package/dist/multi-chain-accounts-service/types.cjs.map +1 -1
- package/dist/multi-chain-accounts-service/types.d.cts +2 -1
- package/dist/multi-chain-accounts-service/types.d.cts.map +1 -1
- package/dist/multi-chain-accounts-service/types.d.mts +2 -1
- package/dist/multi-chain-accounts-service/types.d.mts.map +1 -1
- package/dist/multi-chain-accounts-service/types.mjs.map +1 -1
- package/dist/multicall.cjs +5 -0
- package/dist/multicall.cjs.map +1 -1
- package/dist/multicall.d.cts.map +1 -1
- package/dist/multicall.d.mts.map +1 -1
- package/dist/multicall.mjs +5 -0
- package/dist/multicall.mjs.map +1 -1
- package/dist/selectors/token-selectors.cjs +3 -3
- package/dist/selectors/token-selectors.cjs.map +1 -1
- package/dist/selectors/token-selectors.d.cts +711 -0
- package/dist/selectors/token-selectors.d.cts.map +1 -1
- package/dist/selectors/token-selectors.d.mts +711 -0
- package/dist/selectors/token-selectors.d.mts.map +1 -1
- package/dist/selectors/token-selectors.mjs +1 -1
- package/dist/selectors/token-selectors.mjs.map +1 -1
- package/dist/token-prices-service/codefi-v2.cjs +79 -91
- package/dist/token-prices-service/codefi-v2.cjs.map +1 -1
- package/dist/token-prices-service/codefi-v2.d.cts +40 -17
- package/dist/token-prices-service/codefi-v2.d.cts.map +1 -1
- package/dist/token-prices-service/codefi-v2.d.mts +40 -17
- package/dist/token-prices-service/codefi-v2.d.mts.map +1 -1
- package/dist/token-prices-service/codefi-v2.mjs +79 -91
- package/dist/token-prices-service/codefi-v2.mjs.map +1 -1
- package/dist/token-service.cjs +43 -14
- package/dist/token-service.cjs.map +1 -1
- package/dist/token-service.d.cts +39 -9
- package/dist/token-service.d.cts.map +1 -1
- package/dist/token-service.d.mts +39 -9
- package/dist/token-service.d.mts.map +1 -1
- package/dist/token-service.mjs +43 -14
- package/dist/token-service.mjs.map +1 -1
- package/package.json +10 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AccountsControllerSelectedEvmAccountChangeEvent, AccountsControllerGetSelectedAccountAction, AccountsControllerListAccountsAction } from "@metamask/accounts-controller";
|
|
2
2
|
import type { ControllerStateChangeEvent, ControllerGetStateAction } from "@metamask/base-controller";
|
|
3
|
-
import type { KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
3
|
+
import type { KeyringControllerGetStateAction, KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
4
4
|
import type { Messenger } from "@metamask/messenger";
|
|
5
5
|
import type { NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction, NetworkControllerNetworkAddedEvent } from "@metamask/network-controller";
|
|
6
6
|
import type { TransactionControllerTransactionConfirmedEvent, TransactionControllerUnapprovedTransactionAddedEvent } from "@metamask/transaction-controller";
|
|
@@ -67,7 +67,7 @@ export type AllowedActions = AccountsControllerListAccountsAction | {
|
|
|
67
67
|
handler: () => {
|
|
68
68
|
isMultiAccountBalancesEnabled: boolean;
|
|
69
69
|
};
|
|
70
|
-
} | AccountsControllerGetSelectedAccountAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction;
|
|
70
|
+
} | AccountsControllerGetSelectedAccountAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | KeyringControllerGetStateAction;
|
|
71
71
|
/**
|
|
72
72
|
* The event that {@link AccountTrackerController} can emit.
|
|
73
73
|
*/
|
|
@@ -79,7 +79,7 @@ export type AccountTrackerControllerEvents = AccountTrackerControllerStateChange
|
|
|
79
79
|
/**
|
|
80
80
|
* The external events available to the {@link AccountTrackerController}.
|
|
81
81
|
*/
|
|
82
|
-
export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerNetworkAddedEvent | KeyringControllerUnlockEvent;
|
|
82
|
+
export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerNetworkAddedEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent;
|
|
83
83
|
/**
|
|
84
84
|
* The messenger of the {@link AccountTrackerController}.
|
|
85
85
|
*/
|
|
@@ -90,8 +90,8 @@ type AccountTrackerPollingInput = {
|
|
|
90
90
|
queryAllAccounts?: boolean;
|
|
91
91
|
};
|
|
92
92
|
declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
|
|
93
|
-
readonly "__#
|
|
94
|
-
"__#
|
|
93
|
+
readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
94
|
+
"__#14@#intervalLength": number | undefined;
|
|
95
95
|
setIntervalLength(intervalLength: number): void;
|
|
96
96
|
getIntervalLength(): number | undefined;
|
|
97
97
|
_startPolling(input: AccountTrackerPollingInput): void;
|
|
@@ -121,8 +121,9 @@ export declare class AccountTrackerController extends AccountTrackerController_b
|
|
|
121
121
|
* @param options.accountsApiChainIds - Function that returns array of chainIds that should use Accounts-API strategy (if supported by API).
|
|
122
122
|
* @param options.allowExternalServices - Disable external HTTP calls (privacy / offline mode).
|
|
123
123
|
* @param options.fetchingEnabled - Function that returns whether the controller is fetching enabled.
|
|
124
|
+
* @param options.isOnboarded - Whether the user has completed onboarding. If false, balance updates are skipped.
|
|
124
125
|
*/
|
|
125
|
-
constructor({ interval, state, messenger, getStakedBalanceForChain, includeStakedAssets, accountsApiChainIds, allowExternalServices, fetchingEnabled, }: {
|
|
126
|
+
constructor({ interval, state, messenger, getStakedBalanceForChain, includeStakedAssets, accountsApiChainIds, allowExternalServices, fetchingEnabled, isOnboarded, }: {
|
|
126
127
|
interval?: number;
|
|
127
128
|
state?: Partial<AccountTrackerControllerState>;
|
|
128
129
|
messenger: AccountTrackerControllerMessenger;
|
|
@@ -131,8 +132,15 @@ export declare class AccountTrackerController extends AccountTrackerController_b
|
|
|
131
132
|
accountsApiChainIds?: () => ChainIdHex[];
|
|
132
133
|
allowExternalServices?: () => boolean;
|
|
133
134
|
fetchingEnabled?: () => boolean;
|
|
135
|
+
isOnboarded?: () => boolean;
|
|
134
136
|
});
|
|
135
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Whether the controller is active (keyring is unlocked and user is onboarded).
|
|
139
|
+
* When locked or not onboarded, balance updates should be skipped.
|
|
140
|
+
*
|
|
141
|
+
* @returns Whether the controller should perform balance updates.
|
|
142
|
+
*/
|
|
143
|
+
get isActive(): boolean;
|
|
136
144
|
/**
|
|
137
145
|
* Refreshes the balances of the accounts using the networkClientId
|
|
138
146
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTrackerController.d.cts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,oCAAoC,EACrC,sCAAsC;AACvC,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EAEzB,kCAAkC;AAOnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AccountTrackerController.d.cts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AccountsControllerSelectedEvmAccountChangeEvent, AccountsControllerGetSelectedAccountAction, AccountsControllerListAccountsAction } from "@metamask/accounts-controller";
|
|
2
2
|
import type { ControllerStateChangeEvent, ControllerGetStateAction } from "@metamask/base-controller";
|
|
3
|
-
import type { KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
3
|
+
import type { KeyringControllerGetStateAction, KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
4
4
|
import type { Messenger } from "@metamask/messenger";
|
|
5
5
|
import type { NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction, NetworkControllerNetworkAddedEvent } from "@metamask/network-controller";
|
|
6
6
|
import type { TransactionControllerTransactionConfirmedEvent, TransactionControllerUnapprovedTransactionAddedEvent } from "@metamask/transaction-controller";
|
|
@@ -67,7 +67,7 @@ export type AllowedActions = AccountsControllerListAccountsAction | {
|
|
|
67
67
|
handler: () => {
|
|
68
68
|
isMultiAccountBalancesEnabled: boolean;
|
|
69
69
|
};
|
|
70
|
-
} | AccountsControllerGetSelectedAccountAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction;
|
|
70
|
+
} | AccountsControllerGetSelectedAccountAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | KeyringControllerGetStateAction;
|
|
71
71
|
/**
|
|
72
72
|
* The event that {@link AccountTrackerController} can emit.
|
|
73
73
|
*/
|
|
@@ -79,7 +79,7 @@ export type AccountTrackerControllerEvents = AccountTrackerControllerStateChange
|
|
|
79
79
|
/**
|
|
80
80
|
* The external events available to the {@link AccountTrackerController}.
|
|
81
81
|
*/
|
|
82
|
-
export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerNetworkAddedEvent | KeyringControllerUnlockEvent;
|
|
82
|
+
export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerNetworkAddedEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent;
|
|
83
83
|
/**
|
|
84
84
|
* The messenger of the {@link AccountTrackerController}.
|
|
85
85
|
*/
|
|
@@ -90,8 +90,8 @@ type AccountTrackerPollingInput = {
|
|
|
90
90
|
queryAllAccounts?: boolean;
|
|
91
91
|
};
|
|
92
92
|
declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
|
|
93
|
-
readonly "__#
|
|
94
|
-
"__#
|
|
93
|
+
readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
94
|
+
"__#14@#intervalLength": number | undefined;
|
|
95
95
|
setIntervalLength(intervalLength: number): void;
|
|
96
96
|
getIntervalLength(): number | undefined;
|
|
97
97
|
_startPolling(input: AccountTrackerPollingInput): void;
|
|
@@ -121,8 +121,9 @@ export declare class AccountTrackerController extends AccountTrackerController_b
|
|
|
121
121
|
* @param options.accountsApiChainIds - Function that returns array of chainIds that should use Accounts-API strategy (if supported by API).
|
|
122
122
|
* @param options.allowExternalServices - Disable external HTTP calls (privacy / offline mode).
|
|
123
123
|
* @param options.fetchingEnabled - Function that returns whether the controller is fetching enabled.
|
|
124
|
+
* @param options.isOnboarded - Whether the user has completed onboarding. If false, balance updates are skipped.
|
|
124
125
|
*/
|
|
125
|
-
constructor({ interval, state, messenger, getStakedBalanceForChain, includeStakedAssets, accountsApiChainIds, allowExternalServices, fetchingEnabled, }: {
|
|
126
|
+
constructor({ interval, state, messenger, getStakedBalanceForChain, includeStakedAssets, accountsApiChainIds, allowExternalServices, fetchingEnabled, isOnboarded, }: {
|
|
126
127
|
interval?: number;
|
|
127
128
|
state?: Partial<AccountTrackerControllerState>;
|
|
128
129
|
messenger: AccountTrackerControllerMessenger;
|
|
@@ -131,8 +132,15 @@ export declare class AccountTrackerController extends AccountTrackerController_b
|
|
|
131
132
|
accountsApiChainIds?: () => ChainIdHex[];
|
|
132
133
|
allowExternalServices?: () => boolean;
|
|
133
134
|
fetchingEnabled?: () => boolean;
|
|
135
|
+
isOnboarded?: () => boolean;
|
|
134
136
|
});
|
|
135
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Whether the controller is active (keyring is unlocked and user is onboarded).
|
|
139
|
+
* When locked or not onboarded, balance updates should be skipped.
|
|
140
|
+
*
|
|
141
|
+
* @returns Whether the controller should perform balance updates.
|
|
142
|
+
*/
|
|
143
|
+
get isActive(): boolean;
|
|
136
144
|
/**
|
|
137
145
|
* Refreshes the balances of the accounts using the networkClientId
|
|
138
146
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTrackerController.d.mts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,oCAAoC,EACrC,sCAAsC;AACvC,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EAEzB,kCAAkC;AAOnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AccountTrackerController.d.mts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _AccountTrackerController_instances, _AccountTrackerController_refreshMutex, _AccountTrackerController_includeStakedAssets, _AccountTrackerController_accountsApiChainIds, _AccountTrackerController_getStakedBalanceForChain, _AccountTrackerController_balanceFetchers, _AccountTrackerController_fetchingEnabled, _AccountTrackerController_getProvider, _AccountTrackerController_getNetworkClient, _AccountTrackerController_createAccountsApiFetcher, _AccountTrackerController_getCorrectNetworkClient, _AccountTrackerController_getNetworkClientIds, _AccountTrackerController_refreshAccounts, _AccountTrackerController_registerMessageHandlers;
|
|
12
|
+
var _AccountTrackerController_instances, _AccountTrackerController_refreshMutex, _AccountTrackerController_includeStakedAssets, _AccountTrackerController_accountsApiChainIds, _AccountTrackerController_getStakedBalanceForChain, _AccountTrackerController_balanceFetchers, _AccountTrackerController_fetchingEnabled, _AccountTrackerController_isOnboarded, _AccountTrackerController_isLocked, _AccountTrackerController_syncAccounts, _AccountTrackerController_getProvider, _AccountTrackerController_getNetworkClient, _AccountTrackerController_createAccountsApiFetcher, _AccountTrackerController_getCorrectNetworkClient, _AccountTrackerController_getNetworkClientIds, _AccountTrackerController_refreshAccounts, _AccountTrackerController_registerMessageHandlers;
|
|
13
13
|
function $importDefault(module) {
|
|
14
14
|
if (module?.__esModule) {
|
|
15
15
|
return module.default;
|
|
@@ -91,8 +91,9 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
91
91
|
* @param options.accountsApiChainIds - Function that returns array of chainIds that should use Accounts-API strategy (if supported by API).
|
|
92
92
|
* @param options.allowExternalServices - Disable external HTTP calls (privacy / offline mode).
|
|
93
93
|
* @param options.fetchingEnabled - Function that returns whether the controller is fetching enabled.
|
|
94
|
+
* @param options.isOnboarded - Whether the user has completed onboarding. If false, balance updates are skipped.
|
|
94
95
|
*/
|
|
95
|
-
constructor({ interval = 10000, state, messenger, getStakedBalanceForChain, includeStakedAssets = false, accountsApiChainIds = () => [], allowExternalServices = () => true, fetchingEnabled = () => true, }) {
|
|
96
|
+
constructor({ interval = 10000, state, messenger, getStakedBalanceForChain, includeStakedAssets = false, accountsApiChainIds = () => [], allowExternalServices = () => true, fetchingEnabled = () => true, isOnboarded = () => true, }) {
|
|
96
97
|
const { selectedNetworkClientId } = messenger.call('NetworkController:getState');
|
|
97
98
|
const { configuration: { chainId }, } = messenger.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
|
|
98
99
|
super({
|
|
@@ -113,17 +114,20 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
113
114
|
_AccountTrackerController_getStakedBalanceForChain.set(this, void 0);
|
|
114
115
|
_AccountTrackerController_balanceFetchers.set(this, void 0);
|
|
115
116
|
_AccountTrackerController_fetchingEnabled.set(this, void 0);
|
|
117
|
+
_AccountTrackerController_isOnboarded.set(this, void 0);
|
|
118
|
+
/** Track if the keyring is locked */
|
|
119
|
+
_AccountTrackerController_isLocked.set(this, true);
|
|
116
120
|
_AccountTrackerController_getProvider.set(this, (chainId) => {
|
|
117
121
|
const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
|
|
118
|
-
const
|
|
119
|
-
const { networkClientId } =
|
|
122
|
+
const networkConfig = networkConfigurationsByChainId[chainId];
|
|
123
|
+
const { networkClientId } = networkConfig.rpcEndpoints[networkConfig.defaultRpcEndpointIndex];
|
|
120
124
|
const client = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
121
125
|
return new Web3Provider(client.provider);
|
|
122
126
|
});
|
|
123
127
|
_AccountTrackerController_getNetworkClient.set(this, (chainId) => {
|
|
124
128
|
const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
|
|
125
|
-
const
|
|
126
|
-
const { networkClientId } =
|
|
129
|
+
const networkConfig = networkConfigurationsByChainId[chainId];
|
|
130
|
+
const { networkClientId } = networkConfig.rpcEndpoints[networkConfig.defaultRpcEndpointIndex];
|
|
127
131
|
return this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
|
|
128
132
|
});
|
|
129
133
|
/**
|
|
@@ -155,6 +159,9 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
155
159
|
createAccountTrackerRpcBalanceFetcher(__classPrivateFieldGet(this, _AccountTrackerController_getProvider, "f"), __classPrivateFieldGet(this, _AccountTrackerController_getNetworkClient, "f"), __classPrivateFieldGet(this, _AccountTrackerController_includeStakedAssets, "f")),
|
|
156
160
|
], "f");
|
|
157
161
|
__classPrivateFieldSet(this, _AccountTrackerController_fetchingEnabled, fetchingEnabled, "f");
|
|
162
|
+
__classPrivateFieldSet(this, _AccountTrackerController_isOnboarded, isOnboarded, "f");
|
|
163
|
+
const { isUnlocked } = this.messenger.call('KeyringController:getState');
|
|
164
|
+
__classPrivateFieldSet(this, _AccountTrackerController_isLocked, !isUnlocked, "f");
|
|
158
165
|
this.setIntervalLength(interval);
|
|
159
166
|
this.messenger.subscribe('AccountsController:selectedEvmAccountChange', (newAddress, prevAddress) => {
|
|
160
167
|
if (newAddress !== prevAddress) {
|
|
@@ -163,72 +170,52 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
163
170
|
this.refresh(__classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getNetworkClientIds).call(this));
|
|
164
171
|
}
|
|
165
172
|
}, (event) => event.address);
|
|
166
|
-
this.messenger.subscribe('NetworkController:networkAdded',
|
|
167
|
-
|
|
173
|
+
this.messenger.subscribe('NetworkController:networkAdded', (networkConfiguration) => {
|
|
174
|
+
const { networkClientId } = networkConfiguration.rpcEndpoints[networkConfiguration.defaultRpcEndpointIndex];
|
|
175
|
+
this.refresh([networkClientId]).catch(() => {
|
|
176
|
+
// Silently handle refresh errors
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
this.messenger.subscribe('KeyringController:unlock', () => {
|
|
180
|
+
__classPrivateFieldSet(this, _AccountTrackerController_isLocked, false, "f");
|
|
168
181
|
});
|
|
169
|
-
this.messenger.subscribe('KeyringController:
|
|
170
|
-
|
|
182
|
+
this.messenger.subscribe('KeyringController:lock', () => {
|
|
183
|
+
__classPrivateFieldSet(this, _AccountTrackerController_isLocked, true, "f");
|
|
171
184
|
});
|
|
172
|
-
this.messenger.subscribe('TransactionController:unapprovedTransactionAdded',
|
|
185
|
+
this.messenger.subscribe('TransactionController:unapprovedTransactionAdded', (transactionMeta) => {
|
|
173
186
|
const addresses = [transactionMeta.txParams.from];
|
|
174
187
|
if (transactionMeta.txParams.to) {
|
|
175
188
|
addresses.push(transactionMeta.txParams.to);
|
|
176
189
|
}
|
|
177
|
-
|
|
190
|
+
this.refreshAddresses({
|
|
178
191
|
networkClientIds: [transactionMeta.networkClientId],
|
|
179
192
|
addresses,
|
|
193
|
+
}).catch(() => {
|
|
194
|
+
// Silently handle refresh errors
|
|
180
195
|
});
|
|
181
196
|
});
|
|
182
|
-
this.messenger.subscribe('TransactionController:transactionConfirmed',
|
|
197
|
+
this.messenger.subscribe('TransactionController:transactionConfirmed', (transactionMeta) => {
|
|
183
198
|
const addresses = [transactionMeta.txParams.from];
|
|
184
199
|
if (transactionMeta.txParams.to) {
|
|
185
200
|
addresses.push(transactionMeta.txParams.to);
|
|
186
201
|
}
|
|
187
|
-
|
|
202
|
+
this.refreshAddresses({
|
|
188
203
|
networkClientIds: [transactionMeta.networkClientId],
|
|
189
204
|
addresses,
|
|
205
|
+
}).catch(() => {
|
|
206
|
+
// Silently handle refresh errors
|
|
190
207
|
});
|
|
191
208
|
});
|
|
192
209
|
__classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_registerMessageHandlers).call(this);
|
|
193
210
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
accountsByChainId[newChainId] = {};
|
|
203
|
-
existing.forEach((address) => {
|
|
204
|
-
accountsByChainId[newChainId][address] = { balance: '0x0' };
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
// Note: The address from the preferences controller are checksummed
|
|
209
|
-
// The addresses from the accounts controller are lowercased
|
|
210
|
-
const addresses = Object.values(this.messenger
|
|
211
|
-
.call('AccountsController:listAccounts')
|
|
212
|
-
.map((internalAccount) => toChecksumHexAddress(internalAccount.address)));
|
|
213
|
-
const newAddresses = addresses.filter((address) => !existing.includes(address));
|
|
214
|
-
const oldAddresses = existing.filter((address) => !addresses.includes(address));
|
|
215
|
-
Object.keys(accountsByChainId).forEach((chainId) => {
|
|
216
|
-
newAddresses.forEach((address) => {
|
|
217
|
-
accountsByChainId[chainId][address] = {
|
|
218
|
-
balance: '0x0',
|
|
219
|
-
};
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
Object.keys(accountsByChainId).forEach((chainId) => {
|
|
223
|
-
oldAddresses.forEach((address) => {
|
|
224
|
-
delete accountsByChainId[chainId][address];
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
if (!isEqual(this.state.accountsByChainId, accountsByChainId)) {
|
|
228
|
-
this.update((state) => {
|
|
229
|
-
state.accountsByChainId = accountsByChainId;
|
|
230
|
-
});
|
|
231
|
-
}
|
|
211
|
+
/**
|
|
212
|
+
* Whether the controller is active (keyring is unlocked and user is onboarded).
|
|
213
|
+
* When locked or not onboarded, balance updates should be skipped.
|
|
214
|
+
*
|
|
215
|
+
* @returns Whether the controller should perform balance updates.
|
|
216
|
+
*/
|
|
217
|
+
get isActive() {
|
|
218
|
+
return !__classPrivateFieldGet(this, _AccountTrackerController_isLocked, "f") && __classPrivateFieldGet(this, _AccountTrackerController_isOnboarded, "f").call(this);
|
|
232
219
|
}
|
|
233
220
|
/**
|
|
234
221
|
* Refreshes the balances of the accounts using the networkClientId
|
|
@@ -281,6 +268,10 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
281
268
|
* @returns accounts - addresses with synced balance
|
|
282
269
|
*/
|
|
283
270
|
async syncBalanceWithAddresses(addresses, networkClientId) {
|
|
271
|
+
// Skip balance fetching if locked or not onboarded to avoid unnecessary RPC calls
|
|
272
|
+
if (!this.isActive) {
|
|
273
|
+
return {};
|
|
274
|
+
}
|
|
284
275
|
const { ethQuery } = __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCorrectNetworkClient).call(this, networkClientId);
|
|
285
276
|
// TODO: This should use multicall when enabled by the user.
|
|
286
277
|
return await Promise.all(addresses.map((address) => {
|
|
@@ -391,7 +382,45 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
391
382
|
}
|
|
392
383
|
}
|
|
393
384
|
}
|
|
394
|
-
_AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerController_includeStakedAssets = new WeakMap(), _AccountTrackerController_accountsApiChainIds = new WeakMap(), _AccountTrackerController_getStakedBalanceForChain = new WeakMap(), _AccountTrackerController_balanceFetchers = new WeakMap(), _AccountTrackerController_fetchingEnabled = new WeakMap(), _AccountTrackerController_getProvider = new WeakMap(), _AccountTrackerController_getNetworkClient = new WeakMap(), _AccountTrackerController_createAccountsApiFetcher = new WeakMap(), _AccountTrackerController_instances = new WeakSet(),
|
|
385
|
+
_AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerController_includeStakedAssets = new WeakMap(), _AccountTrackerController_accountsApiChainIds = new WeakMap(), _AccountTrackerController_getStakedBalanceForChain = new WeakMap(), _AccountTrackerController_balanceFetchers = new WeakMap(), _AccountTrackerController_fetchingEnabled = new WeakMap(), _AccountTrackerController_isOnboarded = new WeakMap(), _AccountTrackerController_isLocked = new WeakMap(), _AccountTrackerController_getProvider = new WeakMap(), _AccountTrackerController_getNetworkClient = new WeakMap(), _AccountTrackerController_createAccountsApiFetcher = new WeakMap(), _AccountTrackerController_instances = new WeakSet(), _AccountTrackerController_syncAccounts = function _AccountTrackerController_syncAccounts(newChainIds) {
|
|
386
|
+
const accountsByChainId = cloneDeep(this.state.accountsByChainId);
|
|
387
|
+
const { selectedNetworkClientId } = this.messenger.call('NetworkController:getState');
|
|
388
|
+
const { configuration: { chainId: currentChainId }, } = this.messenger.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
|
|
389
|
+
const existing = Object.keys(accountsByChainId?.[currentChainId] ?? {});
|
|
390
|
+
// Initialize new chain IDs if they don't exist
|
|
391
|
+
newChainIds.forEach((newChainId) => {
|
|
392
|
+
if (!accountsByChainId[newChainId]) {
|
|
393
|
+
accountsByChainId[newChainId] = {};
|
|
394
|
+
existing.forEach((address) => {
|
|
395
|
+
accountsByChainId[newChainId][address] = { balance: '0x0' };
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
// Note: The address from the preferences controller are checksummed
|
|
400
|
+
// The addresses from the accounts controller are lowercased
|
|
401
|
+
const addresses = Object.values(this.messenger
|
|
402
|
+
.call('AccountsController:listAccounts')
|
|
403
|
+
.map((internalAccount) => toChecksumHexAddress(internalAccount.address)));
|
|
404
|
+
const newAddresses = addresses.filter((address) => !existing.includes(address));
|
|
405
|
+
const oldAddresses = existing.filter((address) => !addresses.includes(address));
|
|
406
|
+
Object.keys(accountsByChainId).forEach((chainId) => {
|
|
407
|
+
newAddresses.forEach((address) => {
|
|
408
|
+
accountsByChainId[chainId][address] = {
|
|
409
|
+
balance: '0x0',
|
|
410
|
+
};
|
|
411
|
+
});
|
|
412
|
+
});
|
|
413
|
+
Object.keys(accountsByChainId).forEach((chainId) => {
|
|
414
|
+
oldAddresses.forEach((address) => {
|
|
415
|
+
delete accountsByChainId[chainId][address];
|
|
416
|
+
});
|
|
417
|
+
});
|
|
418
|
+
if (!isEqual(this.state.accountsByChainId, accountsByChainId)) {
|
|
419
|
+
this.update((state) => {
|
|
420
|
+
state.accountsByChainId = accountsByChainId;
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
}, _AccountTrackerController_getCorrectNetworkClient = function _AccountTrackerController_getCorrectNetworkClient(networkClientId) {
|
|
395
424
|
const selectedNetworkClientId = networkClientId ??
|
|
396
425
|
this.messenger.call('NetworkController:getState').selectedNetworkClientId;
|
|
397
426
|
const { configuration: { chainId }, provider, blockTracker, } = this.messenger.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
|
|
@@ -411,8 +440,8 @@ _AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerControlle
|
|
|
411
440
|
const { chainId } = __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCorrectNetworkClient).call(this, networkClientId);
|
|
412
441
|
return chainId;
|
|
413
442
|
});
|
|
414
|
-
this.
|
|
415
|
-
if (!__classPrivateFieldGet(this, _AccountTrackerController_fetchingEnabled, "f").call(this)) {
|
|
443
|
+
__classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_syncAccounts).call(this, chainIds);
|
|
444
|
+
if (!__classPrivateFieldGet(this, _AccountTrackerController_fetchingEnabled, "f").call(this) || !this.isActive) {
|
|
416
445
|
return;
|
|
417
446
|
}
|
|
418
447
|
// Use balance fetchers with fallback strategy
|
|
@@ -426,7 +455,7 @@ _AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerControlle
|
|
|
426
455
|
}));
|
|
427
456
|
// Try each fetcher in order, removing successfully processed chains
|
|
428
457
|
for (const fetcher of __classPrivateFieldGet(this, _AccountTrackerController_balanceFetchers, "f")) {
|
|
429
|
-
const supportedChains = remainingChains.filter((
|
|
458
|
+
const supportedChains = remainingChains.filter((chainId) => fetcher.supports(chainId));
|
|
430
459
|
if (!supportedChains.length) {
|
|
431
460
|
continue;
|
|
432
461
|
}
|