@metamask/assets-controller 5.0.0 → 6.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 +45 -1
- package/dist/AssetsController.cjs +138 -33
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +13 -5
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +13 -5
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +138 -33
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.cjs +46 -30
- package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.cts +2 -2
- package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.mts +2 -2
- package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.mjs +46 -30
- package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
- package/dist/data-sources/PriceDataSource.cjs +1 -1
- package/dist/data-sources/PriceDataSource.cjs.map +1 -1
- package/dist/data-sources/PriceDataSource.d.cts +1 -1
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
- package/dist/data-sources/PriceDataSource.d.mts +1 -1
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
- package/dist/data-sources/PriceDataSource.mjs +1 -1
- package/dist/data-sources/PriceDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +14 -4
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts +6 -2
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts +6 -2
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +14 -4
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/SnapDataSource.cjs +1 -1
- package/dist/data-sources/SnapDataSource.cjs.map +1 -1
- package/dist/data-sources/SnapDataSource.d.cts +2 -2
- package/dist/data-sources/SnapDataSource.d.cts.map +1 -1
- package/dist/data-sources/SnapDataSource.d.mts +2 -2
- package/dist/data-sources/SnapDataSource.d.mts.map +1 -1
- package/dist/data-sources/SnapDataSource.mjs +1 -1
- package/dist/data-sources/SnapDataSource.mjs.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.cjs +1 -1
- package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.d.cts +2 -2
- package/dist/data-sources/StakedBalanceDataSource.d.cts.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.d.mts +2 -2
- package/dist/data-sources/StakedBalanceDataSource.d.mts.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.mjs +1 -1
- package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -1
- package/dist/data-sources/TokenDataSource.cjs +13 -4
- package/dist/data-sources/TokenDataSource.cjs.map +1 -1
- package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
- package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
- package/dist/data-sources/TokenDataSource.mjs +13 -4
- package/dist/data-sources/TokenDataSource.mjs.map +1 -1
- package/dist/utils/formatStateForTransactionPay.cjs.map +1 -1
- package/dist/utils/formatStateForTransactionPay.d.cts +1 -1
- package/dist/utils/formatStateForTransactionPay.d.cts.map +1 -1
- package/dist/utils/formatStateForTransactionPay.d.mts +1 -1
- package/dist/utils/formatStateForTransactionPay.d.mts.map +1 -1
- package/dist/utils/formatStateForTransactionPay.mjs.map +1 -1
- package/package.json +19 -18
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, AccountTreeControllerSelectedAccountGroupChangeEvent } from "@metamask/account-tree-controller";
|
|
1
|
+
import type { AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, AccountTreeControllerSelectedAccountGroupChangeEvent, AccountTreeControllerStateChangeEvent } from "@metamask/account-tree-controller";
|
|
2
|
+
import type { AccountsControllerGetSelectedAccountAction } from "@metamask/accounts-controller";
|
|
2
3
|
import { BaseController } from "@metamask/base-controller";
|
|
3
4
|
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
4
5
|
import type { ClientControllerStateChangeEvent } from "@metamask/client-controller";
|
|
@@ -13,7 +14,7 @@ import type { GetPermissions, PermissionControllerStateChange } from "@metamask/
|
|
|
13
14
|
import { PhishingControllerBulkScanTokensAction } from "@metamask/phishing-controller";
|
|
14
15
|
import type { PreferencesControllerStateChangeEvent } from "@metamask/preferences-controller";
|
|
15
16
|
import type { SnapControllerGetRunnableSnapsAction, SnapControllerHandleRequestAction } from "@metamask/snaps-controllers";
|
|
16
|
-
import type { TransactionControllerIncomingTransactionsReceivedEvent, TransactionControllerTransactionConfirmedEvent } from "@metamask/transaction-controller";
|
|
17
|
+
import type { TransactionControllerIncomingTransactionsReceivedEvent, TransactionControllerTransactionConfirmedEvent, TransactionControllerUnapprovedTransactionAddedEvent } from "@metamask/transaction-controller";
|
|
17
18
|
import type { AssetsControllerMethodActions } from "./AssetsController-method-action-types.cjs";
|
|
18
19
|
import type { AccountsApiDataSourceConfig } from "./data-sources/AccountsApiDataSource.cjs";
|
|
19
20
|
import type { PriceDataSourceConfig } from "./data-sources/PriceDataSource.cjs";
|
|
@@ -106,8 +107,8 @@ export type AssetsControllerAssetsDetectedEvent = {
|
|
|
106
107
|
}];
|
|
107
108
|
};
|
|
108
109
|
export type AssetsControllerEvents = AssetsControllerStateChangeEvent | AssetsControllerBalanceChangedEvent | AssetsControllerPriceChangedEvent | AssetsControllerAssetsDetectedEvent;
|
|
109
|
-
type AllowedActions = AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | SnapControllerGetRunnableSnapsAction | SnapControllerHandleRequestAction | GetPermissions | BackendWebSocketServiceActions | PhishingControllerBulkScanTokensAction;
|
|
110
|
-
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | ClientControllerStateChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent | TransactionControllerIncomingTransactionsReceivedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | BackendWebSocketServiceEvents;
|
|
110
|
+
type AllowedActions = AccountsControllerGetSelectedAccountAction | AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | SnapControllerGetRunnableSnapsAction | SnapControllerHandleRequestAction | GetPermissions | BackendWebSocketServiceActions | PhishingControllerBulkScanTokensAction;
|
|
111
|
+
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | AccountTreeControllerStateChangeEvent | ClientControllerStateChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent | TransactionControllerIncomingTransactionsReceivedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | BackendWebSocketServiceEvents;
|
|
111
112
|
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
112
113
|
export type AssetsControllerOptions = {
|
|
113
114
|
messenger: AssetsControllerMessenger;
|
|
@@ -152,6 +153,13 @@ export type AssetsControllerOptions = {
|
|
|
152
153
|
priceDataSourceConfig?: PriceDataSourceConfig;
|
|
153
154
|
/** Optional configuration for StakedBalanceDataSource. */
|
|
154
155
|
stakedBalanceDataSourceConfig?: StakedBalanceDataSourceConfig;
|
|
156
|
+
/**
|
|
157
|
+
* Function returning whether onboarding is complete. When false,
|
|
158
|
+
* RPC and staked balance data sources skip fetch and subscribe
|
|
159
|
+
* (no on-chain calls until the user has finished onboarding).
|
|
160
|
+
* Defaults to () => true.
|
|
161
|
+
*/
|
|
162
|
+
isOnboarded?: () => boolean;
|
|
155
163
|
};
|
|
156
164
|
/**
|
|
157
165
|
* AssetsController provides a unified interface for managing asset balances
|
|
@@ -182,7 +190,7 @@ export type AssetsControllerOptions = {
|
|
|
182
190
|
*/
|
|
183
191
|
export declare class AssetsController extends BaseController<typeof CONTROLLER_NAME, AssetsControllerState, AssetsControllerMessenger> {
|
|
184
192
|
#private;
|
|
185
|
-
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, }: AssetsControllerOptions);
|
|
193
|
+
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }: AssetsControllerOptions);
|
|
186
194
|
/**
|
|
187
195
|
* Returns the callback passed to data sources for reporting active chain updates.
|
|
188
196
|
* Used by tests to simulate a data source reporting chain changes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,
|
|
1
|
+
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, AccountTreeControllerSelectedAccountGroupChangeEvent } from "@metamask/account-tree-controller";
|
|
1
|
+
import type { AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, AccountTreeControllerSelectedAccountGroupChangeEvent, AccountTreeControllerStateChangeEvent } from "@metamask/account-tree-controller";
|
|
2
|
+
import type { AccountsControllerGetSelectedAccountAction } from "@metamask/accounts-controller";
|
|
2
3
|
import { BaseController } from "@metamask/base-controller";
|
|
3
4
|
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
4
5
|
import type { ClientControllerStateChangeEvent } from "@metamask/client-controller";
|
|
@@ -13,7 +14,7 @@ import type { GetPermissions, PermissionControllerStateChange } from "@metamask/
|
|
|
13
14
|
import { PhishingControllerBulkScanTokensAction } from "@metamask/phishing-controller";
|
|
14
15
|
import type { PreferencesControllerStateChangeEvent } from "@metamask/preferences-controller";
|
|
15
16
|
import type { SnapControllerGetRunnableSnapsAction, SnapControllerHandleRequestAction } from "@metamask/snaps-controllers";
|
|
16
|
-
import type { TransactionControllerIncomingTransactionsReceivedEvent, TransactionControllerTransactionConfirmedEvent } from "@metamask/transaction-controller";
|
|
17
|
+
import type { TransactionControllerIncomingTransactionsReceivedEvent, TransactionControllerTransactionConfirmedEvent, TransactionControllerUnapprovedTransactionAddedEvent } from "@metamask/transaction-controller";
|
|
17
18
|
import type { AssetsControllerMethodActions } from "./AssetsController-method-action-types.mjs";
|
|
18
19
|
import type { AccountsApiDataSourceConfig } from "./data-sources/AccountsApiDataSource.mjs";
|
|
19
20
|
import type { PriceDataSourceConfig } from "./data-sources/PriceDataSource.mjs";
|
|
@@ -106,8 +107,8 @@ export type AssetsControllerAssetsDetectedEvent = {
|
|
|
106
107
|
}];
|
|
107
108
|
};
|
|
108
109
|
export type AssetsControllerEvents = AssetsControllerStateChangeEvent | AssetsControllerBalanceChangedEvent | AssetsControllerPriceChangedEvent | AssetsControllerAssetsDetectedEvent;
|
|
109
|
-
type AllowedActions = AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | SnapControllerGetRunnableSnapsAction | SnapControllerHandleRequestAction | GetPermissions | BackendWebSocketServiceActions | PhishingControllerBulkScanTokensAction;
|
|
110
|
-
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | ClientControllerStateChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent | TransactionControllerIncomingTransactionsReceivedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | BackendWebSocketServiceEvents;
|
|
110
|
+
type AllowedActions = AccountsControllerGetSelectedAccountAction | AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | SnapControllerGetRunnableSnapsAction | SnapControllerHandleRequestAction | GetPermissions | BackendWebSocketServiceActions | PhishingControllerBulkScanTokensAction;
|
|
111
|
+
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | AccountTreeControllerStateChangeEvent | ClientControllerStateChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent | TransactionControllerIncomingTransactionsReceivedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | BackendWebSocketServiceEvents;
|
|
111
112
|
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
112
113
|
export type AssetsControllerOptions = {
|
|
113
114
|
messenger: AssetsControllerMessenger;
|
|
@@ -152,6 +153,13 @@ export type AssetsControllerOptions = {
|
|
|
152
153
|
priceDataSourceConfig?: PriceDataSourceConfig;
|
|
153
154
|
/** Optional configuration for StakedBalanceDataSource. */
|
|
154
155
|
stakedBalanceDataSourceConfig?: StakedBalanceDataSourceConfig;
|
|
156
|
+
/**
|
|
157
|
+
* Function returning whether onboarding is complete. When false,
|
|
158
|
+
* RPC and staked balance data sources skip fetch and subscribe
|
|
159
|
+
* (no on-chain calls until the user has finished onboarding).
|
|
160
|
+
* Defaults to () => true.
|
|
161
|
+
*/
|
|
162
|
+
isOnboarded?: () => boolean;
|
|
155
163
|
};
|
|
156
164
|
/**
|
|
157
165
|
* AssetsController provides a unified interface for managing asset balances
|
|
@@ -182,7 +190,7 @@ export type AssetsControllerOptions = {
|
|
|
182
190
|
*/
|
|
183
191
|
export declare class AssetsController extends BaseController<typeof CONTROLLER_NAME, AssetsControllerState, AssetsControllerMessenger> {
|
|
184
192
|
#private;
|
|
185
|
-
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, }: AssetsControllerOptions);
|
|
193
|
+
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }: AssetsControllerOptions);
|
|
186
194
|
/**
|
|
187
195
|
* Returns the callback passed to data sources for reporting active chain updates.
|
|
188
196
|
* Used by tests to simulate a data source reporting chain changes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,
|
|
1
|
+
{"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
11
|
};
|
|
12
|
-
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitTrace, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains,
|
|
12
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitTrace, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_lastKnownAccountIds, _AssetsController_getSelectedAccounts, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_onActiveChainsUpdated, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_onUnapprovedTransactionAdded, _AssetsController_updateActive, _AssetsController_handleAccountTreeStateChange, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_resolveNativeAssetIds, _AssetsController_getNativeAssetIdsForEnabledChains, _AssetsController_getNativeAssetIdsForAccount, _AssetsController_ensureNativeBalancesDefaultZero, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_shouldHideNativeToken, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_subscribeStakedBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged;
|
|
13
13
|
import { BaseController } from "@metamask/base-controller";
|
|
14
14
|
import { clientControllerSelectors } from "@metamask/client-controller";
|
|
15
15
|
import { CHAIN_IDS_WITH_NO_NATIVE_TOKEN } from "@metamask/controller-utils";
|
|
@@ -204,7 +204,7 @@ function normalizeResponse(response) {
|
|
|
204
204
|
* - The controller does NOT manage polling - it simply receives pushed updates
|
|
205
205
|
*/
|
|
206
206
|
export class AssetsController extends BaseController {
|
|
207
|
-
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, }) {
|
|
207
|
+
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }) {
|
|
208
208
|
super({
|
|
209
209
|
name: CONTROLLER_NAME,
|
|
210
210
|
messenger,
|
|
@@ -241,6 +241,12 @@ export class AssetsController extends BaseController {
|
|
|
241
241
|
_AssetsController_activeSubscriptions.set(this, new Map());
|
|
242
242
|
/** Currently enabled chains from NetworkEnablementController */
|
|
243
243
|
_AssetsController_enabledChains.set(this, new Set());
|
|
244
|
+
/**
|
|
245
|
+
* Snapshot of account IDs that were active when the last subscription/fetch
|
|
246
|
+
* cycle ran. Used by #handleAccountTreeStateChange to skip redundant
|
|
247
|
+
* re-subscriptions when the account set hasn't actually changed.
|
|
248
|
+
*/
|
|
249
|
+
_AssetsController_lastKnownAccountIds.set(this, new Set());
|
|
244
250
|
_AssetsController_backendWebsocketDataSource.set(this, void 0);
|
|
245
251
|
_AssetsController_accountsApiDataSource.set(this, void 0);
|
|
246
252
|
_AssetsController_snapDataSource.set(this, void 0);
|
|
@@ -285,6 +291,7 @@ export class AssetsController extends BaseController {
|
|
|
285
291
|
messenger: this.messenger,
|
|
286
292
|
onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
|
|
287
293
|
...rpcConfig,
|
|
294
|
+
isOnboarded: rpcConfig.isOnboarded ?? isOnboarded,
|
|
288
295
|
}), "f");
|
|
289
296
|
__classPrivateFieldSet(this, _AssetsController_stakedBalanceDataSource, new StakedBalanceDataSource({
|
|
290
297
|
messenger: this.messenger,
|
|
@@ -502,7 +509,7 @@ export class AssetsController extends BaseController {
|
|
|
502
509
|
* @returns Legacy-compatible state for transaction-pay-controller.
|
|
503
510
|
*/
|
|
504
511
|
getStateForTransactionPay() {
|
|
505
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
512
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
506
513
|
const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
|
|
507
514
|
const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
|
|
508
515
|
return formatStateForTransactionPay({
|
|
@@ -575,7 +582,7 @@ export class AssetsController extends BaseController {
|
|
|
575
582
|
}
|
|
576
583
|
});
|
|
577
584
|
// Fetch data for the newly added custom asset (merge to preserve other chains)
|
|
578
|
-
const account = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
585
|
+
const account = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).find((a) => a.id === accountId);
|
|
579
586
|
if (account) {
|
|
580
587
|
const chainId = extractChainId(normalizedAssetId);
|
|
581
588
|
await this.getAssets([account], {
|
|
@@ -674,7 +681,7 @@ export class AssetsController extends BaseController {
|
|
|
674
681
|
if (!__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)) {
|
|
675
682
|
return;
|
|
676
683
|
}
|
|
677
|
-
this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "
|
|
684
|
+
this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this), {
|
|
678
685
|
forceUpdate: true,
|
|
679
686
|
dataTypes: ['price'],
|
|
680
687
|
assetsForPriceUpdate: Object.values(this.state.assetsBalance).flatMap((balances) => Object.keys(balances)),
|
|
@@ -699,10 +706,11 @@ export class AssetsController extends BaseController {
|
|
|
699
706
|
const subscriptionKey = 'ds:PriceDataSource';
|
|
700
707
|
const existingSubscription = __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").get(subscriptionKey);
|
|
701
708
|
const isUpdate = existingSubscription !== undefined;
|
|
709
|
+
const request = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildDataRequest).call(this, accounts, chainIds, {
|
|
710
|
+
dataTypes: ['price'],
|
|
711
|
+
});
|
|
702
712
|
const subscribeReq = {
|
|
703
|
-
request
|
|
704
|
-
dataTypes: ['price'],
|
|
705
|
-
}),
|
|
713
|
+
request,
|
|
706
714
|
subscriptionId: subscriptionKey,
|
|
707
715
|
isUpdate,
|
|
708
716
|
onAssetsUpdate: (response) => this.handleAssetsUpdate(response, 'PriceDataSource'),
|
|
@@ -829,7 +837,7 @@ export class AssetsController extends BaseController {
|
|
|
829
837
|
this.messenger.unregisterActionHandler('AssetsController:unhideAsset');
|
|
830
838
|
}
|
|
831
839
|
}
|
|
832
|
-
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_backendWebsocketDataSource = new WeakMap(), _AssetsController_accountsApiDataSource = new WeakMap(), _AssetsController_snapDataSource = new WeakMap(), _AssetsController_rpcDataSource = new WeakMap(), _AssetsController_stakedBalanceDataSource = new WeakMap(), _AssetsController_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_unsubscribeBasicFunctionality = new WeakMap(), _AssetsController_onActiveChainsUpdated = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_emitTrace = function _AssetsController_emitTrace(name, data, tags = {
|
|
840
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_lastKnownAccountIds = new WeakMap(), _AssetsController_backendWebsocketDataSource = new WeakMap(), _AssetsController_accountsApiDataSource = new WeakMap(), _AssetsController_snapDataSource = new WeakMap(), _AssetsController_rpcDataSource = new WeakMap(), _AssetsController_stakedBalanceDataSource = new WeakMap(), _AssetsController_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_unsubscribeBasicFunctionality = new WeakMap(), _AssetsController_onActiveChainsUpdated = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_emitTrace = function _AssetsController_emitTrace(name, data, tags = {
|
|
833
841
|
controller: 'AssetsController',
|
|
834
842
|
}) {
|
|
835
843
|
if (!__classPrivateFieldGet(this, _AssetsController_trace, "f")) {
|
|
@@ -875,8 +883,16 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
875
883
|
price_entries: Object.keys(assetsPrice).length,
|
|
876
884
|
custom_asset_entries: customAssetEntries,
|
|
877
885
|
});
|
|
878
|
-
},
|
|
879
|
-
|
|
886
|
+
}, _AssetsController_getSelectedAccounts = function _AssetsController_getSelectedAccounts() {
|
|
887
|
+
const accounts = this.messenger.call('AccountTreeController:getAccountsFromSelectedAccountGroup');
|
|
888
|
+
if (accounts.length > 0) {
|
|
889
|
+
return accounts;
|
|
890
|
+
}
|
|
891
|
+
const selectedAccount = this.messenger.call('AccountsController:getSelectedAccount');
|
|
892
|
+
if (selectedAccount) {
|
|
893
|
+
return [selectedAccount];
|
|
894
|
+
}
|
|
895
|
+
return [];
|
|
880
896
|
}, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
|
|
881
897
|
return [
|
|
882
898
|
__classPrivateFieldGet(this, _AssetsController_backendWebsocketDataSource, "f"),
|
|
@@ -921,6 +937,16 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
921
937
|
this.messenger.subscribe('AccountTreeController:selectedAccountGroupChange', () => {
|
|
922
938
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleAccountGroupChanged).call(this).catch(console.error);
|
|
923
939
|
});
|
|
940
|
+
// Catch the initial tree build. On returning users,
|
|
941
|
+
// `selectedAccountGroupChange` does NOT fire when the persisted group
|
|
942
|
+
// is unchanged, and `accountTreeChange` doesn't fire either (init()
|
|
943
|
+
// rebuilds from persisted accounts without publishing it).
|
|
944
|
+
// The base-controller `:stateChange` event is guaranteed to fire
|
|
945
|
+
// when init() calls this.update(). #start() is idempotent so
|
|
946
|
+
// repeated fires are safe.
|
|
947
|
+
this.messenger.subscribe('AccountTreeController:stateChange', () => {
|
|
948
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleAccountTreeStateChange).call(this);
|
|
949
|
+
});
|
|
924
950
|
// Subscribe to network enablement changes (only enabledNetworkMap)
|
|
925
951
|
this.messenger.subscribe('NetworkEnablementController:stateChange', ({ enabledNetworkMap }) => {
|
|
926
952
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleEnabledNetworksChanged).call(this, enabledNetworkMap).catch(console.error);
|
|
@@ -938,6 +964,33 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
938
964
|
__classPrivateFieldSet(this, _AssetsController_keyringUnlocked, false, "f");
|
|
939
965
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
940
966
|
});
|
|
967
|
+
// Subscribe to unapproved transactions - TXs that need confirmation
|
|
968
|
+
// Ensures that balances for the account making transaction are updated (e.g. for gas estimations)
|
|
969
|
+
this.messenger.subscribe('TransactionController:unapprovedTransactionAdded', (transactionMeta) => {
|
|
970
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_onUnapprovedTransactionAdded).call(this, transactionMeta);
|
|
971
|
+
});
|
|
972
|
+
}, _AssetsController_onUnapprovedTransactionAdded = function _AssetsController_onUnapprovedTransactionAdded(transactionMeta) {
|
|
973
|
+
const hexChainId = transactionMeta.chainId;
|
|
974
|
+
if (!hexChainId) {
|
|
975
|
+
return;
|
|
976
|
+
}
|
|
977
|
+
const caipChainId = `eip155:${parseInt(hexChainId, 16)}`;
|
|
978
|
+
const fromAddress = transactionMeta.txParams.from?.toLowerCase();
|
|
979
|
+
if (!fromAddress) {
|
|
980
|
+
return;
|
|
981
|
+
}
|
|
982
|
+
const matchedAccount = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).find((account) => account.address.toLowerCase() === fromAddress);
|
|
983
|
+
if (!matchedAccount) {
|
|
984
|
+
return;
|
|
985
|
+
}
|
|
986
|
+
this.getAssets([matchedAccount], {
|
|
987
|
+
chainIds: [caipChainId],
|
|
988
|
+
forceUpdate: true,
|
|
989
|
+
}).catch((error) => {
|
|
990
|
+
log('Failed to refresh assets after unapproved transaction added', {
|
|
991
|
+
error,
|
|
992
|
+
});
|
|
993
|
+
});
|
|
941
994
|
}, _AssetsController_updateActive = function _AssetsController_updateActive() {
|
|
942
995
|
const shouldRun = __classPrivateFieldGet(this, _AssetsController_uiOpen, "f") && __classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f");
|
|
943
996
|
if (shouldRun) {
|
|
@@ -946,6 +999,36 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
946
999
|
else {
|
|
947
1000
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this);
|
|
948
1001
|
}
|
|
1002
|
+
}, _AssetsController_handleAccountTreeStateChange = function _AssetsController_handleAccountTreeStateChange() {
|
|
1003
|
+
const shouldRun = __classPrivateFieldGet(this, _AssetsController_uiOpen, "f") && __classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f");
|
|
1004
|
+
if (!shouldRun) {
|
|
1005
|
+
return;
|
|
1006
|
+
}
|
|
1007
|
+
if (__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").size > 0) {
|
|
1008
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
1009
|
+
const currentIds = new Set(accounts.map((a) => a.id));
|
|
1010
|
+
const accountsChanged = currentIds.size !== __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size ||
|
|
1011
|
+
[...currentIds].some((id) => !__classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").has(id));
|
|
1012
|
+
if (!accountsChanged) {
|
|
1013
|
+
return;
|
|
1014
|
+
}
|
|
1015
|
+
log('Account tree changed with new accounts, re-subscribing', {
|
|
1016
|
+
previousCount: __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size,
|
|
1017
|
+
currentCount: currentIds.size,
|
|
1018
|
+
});
|
|
1019
|
+
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, currentIds, "f");
|
|
1020
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1021
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureNativeBalancesDefaultZero).call(this);
|
|
1022
|
+
this.getAssets(accounts, {
|
|
1023
|
+
chainIds: [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")],
|
|
1024
|
+
forceUpdate: true,
|
|
1025
|
+
}).catch((error) => {
|
|
1026
|
+
log('Failed to fetch assets after tree change', error);
|
|
1027
|
+
});
|
|
1028
|
+
}
|
|
1029
|
+
else {
|
|
1030
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_start).call(this);
|
|
1031
|
+
}
|
|
949
1032
|
}, _AssetsController_registerActionHandlers = function _AssetsController_registerActionHandlers() {
|
|
950
1033
|
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
951
1034
|
}, _AssetsController_handleActiveChainsUpdate = function _AssetsController_handleActiveChainsUpdate(dataSourceId, activeChains, previousChains) {
|
|
@@ -966,11 +1049,11 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
966
1049
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
967
1050
|
}
|
|
968
1051
|
// If chains were added and we have selected accounts, do one-time fetch
|
|
969
|
-
if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1052
|
+
if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).length > 0) {
|
|
970
1053
|
const addedEnabledChains = addedChains.filter((chain) => __classPrivateFieldGet(this, _AssetsController_enabledChains, "f").has(chain));
|
|
971
1054
|
if (addedEnabledChains.length > 0) {
|
|
972
1055
|
log('Fetching balances for newly added chains', { addedEnabledChains });
|
|
973
|
-
this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1056
|
+
this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this), {
|
|
974
1057
|
chainIds: addedEnabledChains,
|
|
975
1058
|
forceUpdate: true,
|
|
976
1059
|
updateMode: 'merge',
|
|
@@ -1069,7 +1152,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1069
1152
|
}, _AssetsController_getNativeAssetIdsForAccount = function _AssetsController_getNativeAssetIdsForAccount(account) {
|
|
1070
1153
|
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_resolveNativeAssetIds).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getEnabledChainsForAccount).call(this, account));
|
|
1071
1154
|
}, _AssetsController_ensureNativeBalancesDefaultZero = function _AssetsController_ensureNativeBalancesDefaultZero() {
|
|
1072
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1155
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
1073
1156
|
if (accounts.length === 0) {
|
|
1074
1157
|
return;
|
|
1075
1158
|
}
|
|
@@ -1158,7 +1241,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1158
1241
|
return next;
|
|
1159
1242
|
})();
|
|
1160
1243
|
// Ensure native tokens have an entry (0 if missing) for chains this account supports
|
|
1161
|
-
const account = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1244
|
+
const account = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).find((a) => a.id === accountId);
|
|
1162
1245
|
const nativeAssetIdsForAccount = account
|
|
1163
1246
|
? __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetIdsForAccount).call(this, account)
|
|
1164
1247
|
: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetIdsForEnabledChains).call(this);
|
|
@@ -1336,14 +1419,23 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1336
1419
|
return 'fungible';
|
|
1337
1420
|
}
|
|
1338
1421
|
}, _AssetsController_start = function _AssetsController_start() {
|
|
1422
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
1423
|
+
const chainIds = [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")];
|
|
1424
|
+
if (accounts.length === 0 || chainIds.length === 0) {
|
|
1425
|
+
return;
|
|
1426
|
+
}
|
|
1427
|
+
if (__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").size > 0) {
|
|
1428
|
+
return;
|
|
1429
|
+
}
|
|
1339
1430
|
log('Starting asset tracking', {
|
|
1340
|
-
selectedAccountCount:
|
|
1341
|
-
enabledChainCount:
|
|
1431
|
+
selectedAccountCount: accounts.length,
|
|
1432
|
+
enabledChainCount: chainIds.length,
|
|
1342
1433
|
});
|
|
1434
|
+
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(accounts.map((a) => a.id)), "f");
|
|
1343
1435
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1344
1436
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureNativeBalancesDefaultZero).call(this);
|
|
1345
|
-
this.getAssets(
|
|
1346
|
-
chainIds
|
|
1437
|
+
this.getAssets(accounts, {
|
|
1438
|
+
chainIds,
|
|
1347
1439
|
forceUpdate: true,
|
|
1348
1440
|
}).catch((error) => {
|
|
1349
1441
|
log('Failed to fetch assets', error);
|
|
@@ -1355,6 +1447,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1355
1447
|
});
|
|
1356
1448
|
__classPrivateFieldSet(this, _AssetsController_firstInitFetchReported, false, "f");
|
|
1357
1449
|
__classPrivateFieldSet(this, _AssetsController_stateSizeReported, false, "f");
|
|
1450
|
+
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(), "f");
|
|
1358
1451
|
// Stop price subscription first (uses direct messenger call)
|
|
1359
1452
|
this.unsubscribeAssetsPrice();
|
|
1360
1453
|
// Stop balance subscriptions by properly notifying data sources via messenger
|
|
@@ -1377,23 +1470,21 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1377
1470
|
}
|
|
1378
1471
|
__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").clear();
|
|
1379
1472
|
}, _AssetsController_subscribeAssets = function _AssetsController_subscribeAssets() {
|
|
1380
|
-
|
|
1473
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
1474
|
+
const enabledChains = [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")];
|
|
1475
|
+
if (accounts.length === 0 || enabledChains.length === 0) {
|
|
1381
1476
|
return;
|
|
1382
1477
|
}
|
|
1383
1478
|
// Subscribe to balance updates (batched by data source)
|
|
1384
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssetsBalance).call(this,
|
|
1385
|
-
...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
|
|
1386
|
-
]);
|
|
1479
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssetsBalance).call(this, accounts, enabledChains);
|
|
1387
1480
|
// Subscribe to staked balance updates (separate from regular balance chain-claiming)
|
|
1388
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeStakedBalance).call(this,
|
|
1389
|
-
...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
|
|
1390
|
-
]);
|
|
1481
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeStakedBalance).call(this, accounts, enabledChains);
|
|
1391
1482
|
// Subscribe to price updates for all assets held by selected accounts
|
|
1392
|
-
this.subscribeAssetsPrice(
|
|
1483
|
+
this.subscribeAssetsPrice(accounts, enabledChains);
|
|
1393
1484
|
}, _AssetsController_subscribeAssetsBalance = function _AssetsController_subscribeAssetsBalance(accounts, chainIds) {
|
|
1394
1485
|
const chainToAccounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildChainToAccountsMap).call(this, accounts, new Set(chainIds));
|
|
1395
1486
|
const remainingChains = new Set(chainToAccounts.keys());
|
|
1396
|
-
// When basic functionality is on
|
|
1487
|
+
// When basic functionality is on, use all balance data sources; when off, RPC only.
|
|
1397
1488
|
const balanceDataSources = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)
|
|
1398
1489
|
? __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get)
|
|
1399
1490
|
: [__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")];
|
|
@@ -1496,16 +1587,19 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1496
1587
|
}
|
|
1497
1588
|
}, _AssetsController_buildDataRequest = function _AssetsController_buildDataRequest(accounts, chainIds, partial = {}) {
|
|
1498
1589
|
const chainIdSet = new Set(chainIds);
|
|
1590
|
+
// Force update will pass in additional chains for wildcard account scope
|
|
1591
|
+
// Enables updates for chains that are not selected (e.g. for unapproved transactions)
|
|
1592
|
+
const forceUpdateChains = partial.forceUpdate ? chainIds : undefined;
|
|
1499
1593
|
const accountsWithSupportedChains = accounts.map((account) => ({
|
|
1500
1594
|
account,
|
|
1501
|
-
supportedChains: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getEnabledChainsForAccount).call(this, account).filter((chain) => chainIdSet.has(chain)),
|
|
1595
|
+
supportedChains: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getEnabledChainsForAccount).call(this, account, forceUpdateChains).filter((chain) => chainIdSet.has(chain)),
|
|
1502
1596
|
}));
|
|
1503
1597
|
return {
|
|
1504
1598
|
accountsWithSupportedChains,
|
|
1505
1599
|
chainIds,
|
|
1506
1600
|
...partial,
|
|
1507
1601
|
};
|
|
1508
|
-
}, _AssetsController_getEnabledChainsForAccount = function _AssetsController_getEnabledChainsForAccount(account) {
|
|
1602
|
+
}, _AssetsController_getEnabledChainsForAccount = function _AssetsController_getEnabledChainsForAccount(account, additionalChains) {
|
|
1509
1603
|
// Account scopes are CAIP-2 chain IDs like "eip155:1", "solana:mainnet", "bip122:..."
|
|
1510
1604
|
const scopes = account.scopes ?? [];
|
|
1511
1605
|
const result = [];
|
|
@@ -1518,6 +1612,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1518
1612
|
const { namespace, reference } = parseCaipChainId(scopeStr);
|
|
1519
1613
|
// Wildcard scope (e.g., "eip155:0" means all enabled chains in that namespace)
|
|
1520
1614
|
if (reference === '0') {
|
|
1615
|
+
// Add enabled chains
|
|
1521
1616
|
for (const chain of __classPrivateFieldGet(this, _AssetsController_enabledChains, "f")) {
|
|
1522
1617
|
if (isCaipChainId(chain)) {
|
|
1523
1618
|
const chainParsed = parseCaipChainId(chain);
|
|
@@ -1526,6 +1621,15 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1526
1621
|
}
|
|
1527
1622
|
}
|
|
1528
1623
|
}
|
|
1624
|
+
// Add additional chains
|
|
1625
|
+
for (const chain of additionalChains ?? []) {
|
|
1626
|
+
if (isCaipChainId(chain)) {
|
|
1627
|
+
const chainParsed = parseCaipChainId(chain);
|
|
1628
|
+
if (chainParsed.namespace === namespace) {
|
|
1629
|
+
result.push(chain);
|
|
1630
|
+
}
|
|
1631
|
+
}
|
|
1632
|
+
}
|
|
1529
1633
|
}
|
|
1530
1634
|
else if (namespace === 'eip155' && isStrictHexString(reference)) {
|
|
1531
1635
|
// Normalize hex to decimal for EIP155
|
|
@@ -1541,11 +1645,12 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1541
1645
|
// EVENT HANDLERS
|
|
1542
1646
|
// ============================================================================
|
|
1543
1647
|
async function _AssetsController_handleAccountGroupChanged() {
|
|
1544
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1648
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
1545
1649
|
log('Account group changed', {
|
|
1546
1650
|
accountCount: accounts.length,
|
|
1547
1651
|
accountIds: accounts.map((a) => a.id),
|
|
1548
1652
|
});
|
|
1653
|
+
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(accounts.map((a) => a.id)), "f");
|
|
1549
1654
|
// Subscribe and fetch for the new account group
|
|
1550
1655
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1551
1656
|
if (accounts.length > 0) {
|
|
@@ -1584,8 +1689,8 @@ async function _AssetsController_handleAccountGroupChanged() {
|
|
|
1584
1689
|
// Refresh subscriptions for new chain set
|
|
1585
1690
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1586
1691
|
// Do one-time fetch for newly enabled chains; merge so we keep existing chain balances
|
|
1587
|
-
if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1588
|
-
await this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1692
|
+
if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).length > 0) {
|
|
1693
|
+
await this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this), {
|
|
1589
1694
|
chainIds: addedChains,
|
|
1590
1695
|
forceUpdate: true,
|
|
1591
1696
|
updateMode: 'merge',
|