@metamask-previews/assets-controller 11.3.1-preview-a42e8d0d2 → 13.1.0-preview-5a03e1b92
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 +50 -1
- package/dist/AssetsController-method-action-types.cjs.map +1 -1
- package/dist/AssetsController-method-action-types.d.cts +45 -4
- package/dist/AssetsController-method-action-types.d.cts.map +1 -1
- package/dist/AssetsController-method-action-types.d.mts +45 -4
- package/dist/AssetsController-method-action-types.d.mts.map +1 -1
- package/dist/AssetsController-method-action-types.mjs.map +1 -1
- package/dist/AssetsController.cjs +109 -65
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +40 -4
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +40 -4
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +109 -65
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AccountActivityDataSource.cjs +262 -0
- package/dist/data-sources/AccountActivityDataSource.cjs.map +1 -0
- package/dist/data-sources/AccountActivityDataSource.d.cts +80 -0
- package/dist/data-sources/AccountActivityDataSource.d.cts.map +1 -0
- package/dist/data-sources/AccountActivityDataSource.d.mts +80 -0
- package/dist/data-sources/AccountActivityDataSource.d.mts.map +1 -0
- package/dist/data-sources/AccountActivityDataSource.mjs +254 -0
- package/dist/data-sources/AccountActivityDataSource.mjs.map +1 -0
- package/dist/data-sources/AccountsApiDataSource.cjs +22 -0
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs +22 -0
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +10 -2
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +11 -3
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs +9 -4
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.cts +16 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts +16 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs +9 -4
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs.map +1 -1
- package/dist/data-sources/index.cjs +4 -4
- package/dist/data-sources/index.cjs.map +1 -1
- package/dist/data-sources/index.d.cts +1 -1
- package/dist/data-sources/index.d.cts.map +1 -1
- package/dist/data-sources/index.d.mts +1 -1
- package/dist/data-sources/index.d.mts.map +1 -1
- package/dist/data-sources/index.mjs +1 -1
- package/dist/data-sources/index.mjs.map +1 -1
- package/dist/index.cjs +22 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -2
- package/dist/index.mjs.map +1 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs +1 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs.map +1 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.mjs +1 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.mjs.map +1 -1
- package/package.json +11 -10
- package/dist/data-sources/BackendWebsocketDataSource.cjs +0 -597
- package/dist/data-sources/BackendWebsocketDataSource.cjs.map +0 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.cts +0 -65
- package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +0 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.mts +0 -65
- package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +0 -1
- package/dist/data-sources/BackendWebsocketDataSource.mjs +0 -592
- package/dist/data-sources/BackendWebsocketDataSource.mjs.map +0 -1
- package/dist/utils/processAccountActivityBalanceUpdates.cjs +0 -54
- package/dist/utils/processAccountActivityBalanceUpdates.cjs.map +0 -1
- package/dist/utils/processAccountActivityBalanceUpdates.d.cts +0 -13
- package/dist/utils/processAccountActivityBalanceUpdates.d.cts.map +0 -1
- package/dist/utils/processAccountActivityBalanceUpdates.d.mts +0 -13
- package/dist/utils/processAccountActivityBalanceUpdates.d.mts.map +0 -1
- package/dist/utils/processAccountActivityBalanceUpdates.mjs +0 -47
- package/dist/utils/processAccountActivityBalanceUpdates.mjs.map +0 -1
|
@@ -3,8 +3,9 @@ import type { AccountsControllerGetSelectedAccountAction } from "@metamask/accou
|
|
|
3
3
|
import { BaseController } from "@metamask/base-controller";
|
|
4
4
|
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
5
5
|
import type { ClientControllerStateChangeEvent } from "@metamask/client-controller";
|
|
6
|
+
import type { ConfigRegistryControllerGetNetworkConfigByCaip2ChainIdAction } from "@metamask/config-registry-controller";
|
|
6
7
|
import type { TraceCallback } from "@metamask/controller-utils";
|
|
7
|
-
import type { ApiPlatformClient, AccountActivityServiceBalanceUpdatedEvent,
|
|
8
|
+
import type { ApiPlatformClient, AccountActivityServiceBalanceUpdatedEvent, AccountActivityServiceStatusChangedEvent, SupportedCurrency } from "@metamask/core-backend";
|
|
8
9
|
import type { KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
9
10
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
10
11
|
import type { Messenger } from "@metamask/messenger";
|
|
@@ -111,8 +112,8 @@ export type AssetsControllerAssetsDetectedEvent = {
|
|
|
111
112
|
}];
|
|
112
113
|
};
|
|
113
114
|
export type AssetsControllerEvents = AssetsControllerStateChangeEvent | AssetsControllerBalanceChangedEvent | AssetsControllerPriceChangedEvent | AssetsControllerAssetsDetectedEvent;
|
|
114
|
-
type AllowedActions = AccountsControllerGetSelectedAccountAction | AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | SnapControllerGetRunnableSnapsAction | SnapControllerHandleRequestAction | GetPermissions |
|
|
115
|
-
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | AccountTreeControllerStateChangeEvent | ClientControllerStateChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerStateChangeEvent | NetworkControllerNetworkAddedEvent | NetworkControllerNetworkDidChangeEvent | NetworkControllerNetworkRemovedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | SnapControllerSnapInstalledEvent |
|
|
115
|
+
type AllowedActions = AccountsControllerGetSelectedAccountAction | AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | ConfigRegistryControllerGetNetworkConfigByCaip2ChainIdAction | NetworkEnablementControllerGetStateAction | SnapControllerGetRunnableSnapsAction | SnapControllerHandleRequestAction | GetPermissions | PhishingControllerBulkScanTokensAction | RemoteFeatureFlagControllerGetStateAction;
|
|
116
|
+
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | AccountTreeControllerStateChangeEvent | ClientControllerStateChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerStateChangeEvent | NetworkControllerNetworkAddedEvent | NetworkControllerNetworkDidChangeEvent | NetworkControllerNetworkRemovedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | SnapControllerSnapInstalledEvent | AccountActivityServiceBalanceUpdatedEvent | AccountActivityServiceStatusChangedEvent | RemoteFeatureFlagControllerStateChangeEvent;
|
|
116
117
|
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
117
118
|
export type AssetsControllerOptions = {
|
|
118
119
|
messenger: AssetsControllerMessenger;
|
|
@@ -247,7 +248,42 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
247
248
|
* renderable asset (balance + metadata) exists for the account/asset pair.
|
|
248
249
|
* @throws If `accountId` is empty or `assetId` is not a valid CAIP-19 asset ID.
|
|
249
250
|
*/
|
|
250
|
-
|
|
251
|
+
getAccountAssetByID(accountId: AccountId, assetId: Caip19AssetId): Asset | undefined;
|
|
252
|
+
/**
|
|
253
|
+
* Get multiple combined assets (balance + metadata + price + computed
|
|
254
|
+
* `fiatValue`) for an account directly from controller state.
|
|
255
|
+
*
|
|
256
|
+
* Applies the same state-composition and filtering rules as
|
|
257
|
+
* `getAccountAssetByID` to each requested asset ID. Asset IDs that do not
|
|
258
|
+
* resolve to a complete renderable asset (missing balance/metadata, hidden,
|
|
259
|
+
* or otherwise filtered out) are omitted from the result. Reads from
|
|
260
|
+
* current state only and does not trigger a data-source refresh.
|
|
261
|
+
*
|
|
262
|
+
* @param accountId - The account ID (`InternalAccount.id`, not an address).
|
|
263
|
+
* @param assetIds - The CAIP-19 asset IDs including chain scope
|
|
264
|
+
* (e.g. `eip155:1/erc20:0x...`).
|
|
265
|
+
* @returns A record of combined `Asset`s keyed by normalized CAIP-19 asset
|
|
266
|
+
* ID, containing only the requested assets that resolved.
|
|
267
|
+
* @throws If `accountId` is empty or any `assetIds` entry is not a valid
|
|
268
|
+
* CAIP-19 asset ID.
|
|
269
|
+
*/
|
|
270
|
+
getAccountAssetsByIDs(accountId: AccountId, assetIds: Caip19AssetId[]): Record<Caip19AssetId, Asset>;
|
|
271
|
+
/**
|
|
272
|
+
* Get all combined assets (balance + metadata + price + computed
|
|
273
|
+
* `fiatValue`) an account holds on a given chain scope, directly from
|
|
274
|
+
* controller state.
|
|
275
|
+
*
|
|
276
|
+
* Applies the same state-composition and filtering rules as
|
|
277
|
+
* `getAccountAssetByID` (hidden or otherwise filtered assets are excluded).
|
|
278
|
+
* Reads from current state only and does not trigger a data-source refresh.
|
|
279
|
+
*
|
|
280
|
+
* @param accountId - The account ID (`InternalAccount.id`, not an address).
|
|
281
|
+
* @param scope - The CAIP-2 chain ID to filter by (e.g. `eip155:1`).
|
|
282
|
+
* @returns A record of combined `Asset`s keyed by CAIP-19 asset ID,
|
|
283
|
+
* containing only the account's assets on the given scope.
|
|
284
|
+
* @throws If `accountId` is empty or `scope` is not a valid CAIP-2 chain ID.
|
|
285
|
+
*/
|
|
286
|
+
getAccountAssetsByScope(accountId: AccountId, scope: ChainId): Record<Caip19AssetId, Asset>;
|
|
251
287
|
getAssetsPrice(accounts: InternalAccount[], options?: {
|
|
252
288
|
chainIds?: ChainId[];
|
|
253
289
|
assetTypes?: AssetType[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,EACpD,qCAAqC,EACtC,0CAA0C;AAC3C,OAAO,KAAK,EAAE,0CAA0C,EAAE,sCAAsC;AAChG,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAoC;AAEpF,OAAO,KAAK,EAAE,aAAa,EAAgB,mCAAmC;AAC9E,OAAO,KAAK,EACV,iBAAiB,EACjB,yCAAyC,EACzC,
|
|
1
|
+
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,9 @@ import type { AccountsControllerGetSelectedAccountAction } from "@metamask/accou
|
|
|
3
3
|
import { BaseController } from "@metamask/base-controller";
|
|
4
4
|
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
5
5
|
import type { ClientControllerStateChangeEvent } from "@metamask/client-controller";
|
|
6
|
+
import type { ConfigRegistryControllerGetNetworkConfigByCaip2ChainIdAction } from "@metamask/config-registry-controller";
|
|
6
7
|
import type { TraceCallback } from "@metamask/controller-utils";
|
|
7
|
-
import type { ApiPlatformClient, AccountActivityServiceBalanceUpdatedEvent,
|
|
8
|
+
import type { ApiPlatformClient, AccountActivityServiceBalanceUpdatedEvent, AccountActivityServiceStatusChangedEvent, SupportedCurrency } from "@metamask/core-backend";
|
|
8
9
|
import type { KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
9
10
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
10
11
|
import type { Messenger } from "@metamask/messenger";
|
|
@@ -111,8 +112,8 @@ export type AssetsControllerAssetsDetectedEvent = {
|
|
|
111
112
|
}];
|
|
112
113
|
};
|
|
113
114
|
export type AssetsControllerEvents = AssetsControllerStateChangeEvent | AssetsControllerBalanceChangedEvent | AssetsControllerPriceChangedEvent | AssetsControllerAssetsDetectedEvent;
|
|
114
|
-
type AllowedActions = AccountsControllerGetSelectedAccountAction | AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | SnapControllerGetRunnableSnapsAction | SnapControllerHandleRequestAction | GetPermissions |
|
|
115
|
-
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | AccountTreeControllerStateChangeEvent | ClientControllerStateChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerStateChangeEvent | NetworkControllerNetworkAddedEvent | NetworkControllerNetworkDidChangeEvent | NetworkControllerNetworkRemovedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | SnapControllerSnapInstalledEvent |
|
|
115
|
+
type AllowedActions = AccountsControllerGetSelectedAccountAction | AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | ConfigRegistryControllerGetNetworkConfigByCaip2ChainIdAction | NetworkEnablementControllerGetStateAction | SnapControllerGetRunnableSnapsAction | SnapControllerHandleRequestAction | GetPermissions | PhishingControllerBulkScanTokensAction | RemoteFeatureFlagControllerGetStateAction;
|
|
116
|
+
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | AccountTreeControllerStateChangeEvent | ClientControllerStateChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerStateChangeEvent | NetworkControllerNetworkAddedEvent | NetworkControllerNetworkDidChangeEvent | NetworkControllerNetworkRemovedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | SnapControllerSnapInstalledEvent | AccountActivityServiceBalanceUpdatedEvent | AccountActivityServiceStatusChangedEvent | RemoteFeatureFlagControllerStateChangeEvent;
|
|
116
117
|
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
117
118
|
export type AssetsControllerOptions = {
|
|
118
119
|
messenger: AssetsControllerMessenger;
|
|
@@ -247,7 +248,42 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
247
248
|
* renderable asset (balance + metadata) exists for the account/asset pair.
|
|
248
249
|
* @throws If `accountId` is empty or `assetId` is not a valid CAIP-19 asset ID.
|
|
249
250
|
*/
|
|
250
|
-
|
|
251
|
+
getAccountAssetByID(accountId: AccountId, assetId: Caip19AssetId): Asset | undefined;
|
|
252
|
+
/**
|
|
253
|
+
* Get multiple combined assets (balance + metadata + price + computed
|
|
254
|
+
* `fiatValue`) for an account directly from controller state.
|
|
255
|
+
*
|
|
256
|
+
* Applies the same state-composition and filtering rules as
|
|
257
|
+
* `getAccountAssetByID` to each requested asset ID. Asset IDs that do not
|
|
258
|
+
* resolve to a complete renderable asset (missing balance/metadata, hidden,
|
|
259
|
+
* or otherwise filtered out) are omitted from the result. Reads from
|
|
260
|
+
* current state only and does not trigger a data-source refresh.
|
|
261
|
+
*
|
|
262
|
+
* @param accountId - The account ID (`InternalAccount.id`, not an address).
|
|
263
|
+
* @param assetIds - The CAIP-19 asset IDs including chain scope
|
|
264
|
+
* (e.g. `eip155:1/erc20:0x...`).
|
|
265
|
+
* @returns A record of combined `Asset`s keyed by normalized CAIP-19 asset
|
|
266
|
+
* ID, containing only the requested assets that resolved.
|
|
267
|
+
* @throws If `accountId` is empty or any `assetIds` entry is not a valid
|
|
268
|
+
* CAIP-19 asset ID.
|
|
269
|
+
*/
|
|
270
|
+
getAccountAssetsByIDs(accountId: AccountId, assetIds: Caip19AssetId[]): Record<Caip19AssetId, Asset>;
|
|
271
|
+
/**
|
|
272
|
+
* Get all combined assets (balance + metadata + price + computed
|
|
273
|
+
* `fiatValue`) an account holds on a given chain scope, directly from
|
|
274
|
+
* controller state.
|
|
275
|
+
*
|
|
276
|
+
* Applies the same state-composition and filtering rules as
|
|
277
|
+
* `getAccountAssetByID` (hidden or otherwise filtered assets are excluded).
|
|
278
|
+
* Reads from current state only and does not trigger a data-source refresh.
|
|
279
|
+
*
|
|
280
|
+
* @param accountId - The account ID (`InternalAccount.id`, not an address).
|
|
281
|
+
* @param scope - The CAIP-2 chain ID to filter by (e.g. `eip155:1`).
|
|
282
|
+
* @returns A record of combined `Asset`s keyed by CAIP-19 asset ID,
|
|
283
|
+
* containing only the account's assets on the given scope.
|
|
284
|
+
* @throws If `accountId` is empty or `scope` is not a valid CAIP-2 chain ID.
|
|
285
|
+
*/
|
|
286
|
+
getAccountAssetsByScope(accountId: AccountId, scope: ChainId): Record<Caip19AssetId, Asset>;
|
|
251
287
|
getAssetsPrice(accounts: InternalAccount[], options?: {
|
|
252
288
|
chainIds?: ChainId[];
|
|
253
289
|
assetTypes?: AssetType[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,EACpD,qCAAqC,EACtC,0CAA0C;AAC3C,OAAO,KAAK,EAAE,0CAA0C,EAAE,sCAAsC;AAChG,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,KAAK,EAAE,gCAAgC,EAAE,oCAAoC;AAEpF,OAAO,KAAK,EAAE,aAAa,EAAgB,mCAAmC;AAC9E,OAAO,KAAK,EACV,iBAAiB,EACjB,yCAAyC,EACzC,
|
|
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_captureException, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_accountRefreshMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_lastKnownAccountIds, _AssetsController_getSelectedAccounts,
|
|
12
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_captureException, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_accountRefreshMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_lastKnownAccountIds, _AssetsController_getSelectedAccounts, _AssetsController_accountActivityDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_customAssetGraduationMiddleware, _AssetsController_rpcFallbackMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_queryApiClient, _AssetsController_onActiveChainsUpdated, _AssetsController_initializeNativeAssetsMap, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_onUnapprovedTransactionAdded, _AssetsController_onTransactionConfirmed, _AssetsController_updateActive, _AssetsController_handleAccountTreeStateChange, _AssetsController_runAccountTreeRefresh, _AssetsController_runStartupRefresh, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_assertNonEmptyAccountId, _AssetsController_normalizeAssetIdOrThrow, _AssetsController_fetchMissingPricesWithoutCache, _AssetsController_getNativeAssetMap, _AssetsController_isNativeAsset, _AssetsController_getAssetType, _AssetsController_resolveNativeAssetIds, _AssetsController_getNativeAssetIdsForEnabledChains, _AssetsController_getNativeAssetIdsForAccount, _AssetsController_getSlowPipelineChainIds, _AssetsController_ensureNativeBalancesDefaultZero, _AssetsController_ensureDefaultTrackedAssetsSeeded, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_getAssetFromState, _AssetsController_shouldHideNativeToken, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_subscribeRpcCustomAssetsSupplement, _AssetsController_unsubscribeBySubscriptionKey, _AssetsController_subscribeStakedBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged, _AssetsController_handleNetworkAdded, _AssetsController_refreshActiveChainsOnNetworkSwitch, _AssetsController_getSelectedEvmChainIdFromNetworkState, _AssetsController_handleNetworkDidChange, _AssetsController_refreshAssetsAfterNetworkChange, _AssetsController_refreshAssetsAfterNetworkAdded;
|
|
13
13
|
import { BaseController } from "@metamask/base-controller";
|
|
14
14
|
import { clientControllerSelectors } from "@metamask/client-controller";
|
|
15
15
|
import { isCaipChainId, isStrictHexString, KnownCaipNamespace, parseCaipAssetType, parseCaipChainId } from "@metamask/utils";
|
|
@@ -17,8 +17,8 @@ import { Mutex } from "async-mutex";
|
|
|
17
17
|
import BigNumberJS from "bignumber.js";
|
|
18
18
|
import $lodash from "lodash";
|
|
19
19
|
const { isEqual } = $lodash;
|
|
20
|
+
import { AccountActivityDataSource } from "./data-sources/AccountActivityDataSource.mjs";
|
|
20
21
|
import { AccountsApiDataSource } from "./data-sources/AccountsApiDataSource.mjs";
|
|
21
|
-
import { BackendWebsocketDataSource } from "./data-sources/BackendWebsocketDataSource.mjs";
|
|
22
22
|
import { shouldSkipNativeForCaipChainId } from "./data-sources/evm-rpc-services/utils/assets.mjs";
|
|
23
23
|
import { isPriceableAsset, PriceDataSource } from "./data-sources/PriceDataSource.mjs";
|
|
24
24
|
import { RpcDataSource } from "./data-sources/RpcDataSource.mjs";
|
|
@@ -36,7 +36,6 @@ import { tempHealAssetsInfoMetadata } from "./migrations/healAssetsInfoMetadata.
|
|
|
36
36
|
import { ZERO_ADDRESS } from "./utils/constants.mjs";
|
|
37
37
|
import { pickRpcCustomAssetsSupplement } from "./utils/customAssetsRpcSupplement.mjs";
|
|
38
38
|
import { normalizeAmountString, normalizeAssetId, formatExchangeRatesForBridge, formatStateForTransactionPay, buildNativeAssetsFromConstant, buildNativeAssetsFromApi } from "./utils/index.mjs";
|
|
39
|
-
import { processAccountActivityBalanceUpdates } from "./utils/processAccountActivityBalanceUpdates.mjs";
|
|
40
39
|
import { emitTrace, withTrace } from "./utils/trace.mjs";
|
|
41
40
|
const NATIVE_ASSETS_QUERY_KEY = ['nativeAssets'];
|
|
42
41
|
/** Stable empty map so memoized formatters are not busted by `?? {}` identity churn. */
|
|
@@ -50,7 +49,9 @@ const MESSENGER_EXPOSED_METHODS = [
|
|
|
50
49
|
'getAssets',
|
|
51
50
|
'getAssetsBalance',
|
|
52
51
|
'getAssetMetadata',
|
|
53
|
-
'
|
|
52
|
+
'getAccountAssetByID',
|
|
53
|
+
'getAccountAssetsByIDs',
|
|
54
|
+
'getAccountAssetsByScope',
|
|
54
55
|
'getAssetsPrice',
|
|
55
56
|
'getExchangeRatesForBridge',
|
|
56
57
|
'getStateForTransactionPay',
|
|
@@ -310,7 +311,7 @@ export class AssetsController extends BaseController {
|
|
|
310
311
|
* re-subscriptions when the account set hasn't actually changed.
|
|
311
312
|
*/
|
|
312
313
|
_AssetsController_lastKnownAccountIds.set(this, new Set());
|
|
313
|
-
|
|
314
|
+
_AssetsController_accountActivityDataSource.set(this, void 0);
|
|
314
315
|
_AssetsController_accountsApiDataSource.set(this, void 0);
|
|
315
316
|
_AssetsController_snapDataSource.set(this, void 0);
|
|
316
317
|
_AssetsController_rpcDataSource.set(this, void 0);
|
|
@@ -351,11 +352,11 @@ export class AssetsController extends BaseController {
|
|
|
351
352
|
});
|
|
352
353
|
}
|
|
353
354
|
}, "f");
|
|
354
|
-
__classPrivateFieldSet(this,
|
|
355
|
+
__classPrivateFieldSet(this, _AssetsController_accountActivityDataSource, new AccountActivityDataSource({
|
|
355
356
|
messenger: this.messenger,
|
|
356
|
-
queryApiClient,
|
|
357
357
|
onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
|
|
358
358
|
getAssetType: (assetId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetType).call(this, assetId),
|
|
359
|
+
onAssetsUpdate: (response, request) => this.handleAssetsUpdate(response, __classPrivateFieldGet(this, _AssetsController_accountActivityDataSource, "f").getName(), request),
|
|
359
360
|
}), "f");
|
|
360
361
|
__classPrivateFieldSet(this, _AssetsController_accountsApiDataSource, new AccountsApiDataSource({
|
|
361
362
|
messenger: this.messenger,
|
|
@@ -635,21 +636,81 @@ export class AssetsController extends BaseController {
|
|
|
635
636
|
* renderable asset (balance + metadata) exists for the account/asset pair.
|
|
636
637
|
* @throws If `accountId` is empty or `assetId` is not a valid CAIP-19 asset ID.
|
|
637
638
|
*/
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
}
|
|
642
|
-
let normalizedAssetId;
|
|
643
|
-
try {
|
|
644
|
-
normalizedAssetId = normalizeAssetId(assetId);
|
|
645
|
-
}
|
|
646
|
-
catch {
|
|
647
|
-
throw new Error(`AssetsController.getAsset: invalid CAIP-19 assetId "${assetId}"`);
|
|
648
|
-
}
|
|
639
|
+
getAccountAssetByID(accountId, assetId) {
|
|
640
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_assertNonEmptyAccountId).call(this, accountId, 'getAccountAssetByID');
|
|
641
|
+
const normalizedAssetId = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_normalizeAssetIdOrThrow).call(this, assetId, 'getAccountAssetByID');
|
|
649
642
|
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetFromState).call(this, accountId, normalizedAssetId, {
|
|
650
643
|
assetTypeSet: new Set(['fungible']),
|
|
651
644
|
});
|
|
652
645
|
}
|
|
646
|
+
/**
|
|
647
|
+
* Get multiple combined assets (balance + metadata + price + computed
|
|
648
|
+
* `fiatValue`) for an account directly from controller state.
|
|
649
|
+
*
|
|
650
|
+
* Applies the same state-composition and filtering rules as
|
|
651
|
+
* `getAccountAssetByID` to each requested asset ID. Asset IDs that do not
|
|
652
|
+
* resolve to a complete renderable asset (missing balance/metadata, hidden,
|
|
653
|
+
* or otherwise filtered out) are omitted from the result. Reads from
|
|
654
|
+
* current state only and does not trigger a data-source refresh.
|
|
655
|
+
*
|
|
656
|
+
* @param accountId - The account ID (`InternalAccount.id`, not an address).
|
|
657
|
+
* @param assetIds - The CAIP-19 asset IDs including chain scope
|
|
658
|
+
* (e.g. `eip155:1/erc20:0x...`).
|
|
659
|
+
* @returns A record of combined `Asset`s keyed by normalized CAIP-19 asset
|
|
660
|
+
* ID, containing only the requested assets that resolved.
|
|
661
|
+
* @throws If `accountId` is empty or any `assetIds` entry is not a valid
|
|
662
|
+
* CAIP-19 asset ID.
|
|
663
|
+
*/
|
|
664
|
+
getAccountAssetsByIDs(accountId, assetIds) {
|
|
665
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_assertNonEmptyAccountId).call(this, accountId, 'getAccountAssetsByIDs');
|
|
666
|
+
const result = Object.create(null);
|
|
667
|
+
for (const assetId of assetIds) {
|
|
668
|
+
const normalizedAssetId = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_normalizeAssetIdOrThrow).call(this, assetId, 'getAccountAssetsByIDs');
|
|
669
|
+
const asset = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetFromState).call(this, accountId, normalizedAssetId, {
|
|
670
|
+
assetTypeSet: new Set(['fungible']),
|
|
671
|
+
});
|
|
672
|
+
if (asset) {
|
|
673
|
+
result[normalizedAssetId] = asset;
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
return result;
|
|
677
|
+
}
|
|
678
|
+
/**
|
|
679
|
+
* Get all combined assets (balance + metadata + price + computed
|
|
680
|
+
* `fiatValue`) an account holds on a given chain scope, directly from
|
|
681
|
+
* controller state.
|
|
682
|
+
*
|
|
683
|
+
* Applies the same state-composition and filtering rules as
|
|
684
|
+
* `getAccountAssetByID` (hidden or otherwise filtered assets are excluded).
|
|
685
|
+
* Reads from current state only and does not trigger a data-source refresh.
|
|
686
|
+
*
|
|
687
|
+
* @param accountId - The account ID (`InternalAccount.id`, not an address).
|
|
688
|
+
* @param scope - The CAIP-2 chain ID to filter by (e.g. `eip155:1`).
|
|
689
|
+
* @returns A record of combined `Asset`s keyed by CAIP-19 asset ID,
|
|
690
|
+
* containing only the account's assets on the given scope.
|
|
691
|
+
* @throws If `accountId` is empty or `scope` is not a valid CAIP-2 chain ID.
|
|
692
|
+
*/
|
|
693
|
+
getAccountAssetsByScope(accountId, scope) {
|
|
694
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_assertNonEmptyAccountId).call(this, accountId, 'getAccountAssetsByScope');
|
|
695
|
+
if (!isCaipChainId(scope)) {
|
|
696
|
+
throw new Error(`AssetsController.getAccountAssetsByScope: invalid CAIP-2 scope "${String(scope)}"`);
|
|
697
|
+
}
|
|
698
|
+
const result = Object.create(null);
|
|
699
|
+
const chainIdSet = new Set([scope]);
|
|
700
|
+
const assetTypeSet = new Set(['fungible']);
|
|
701
|
+
const accountBalances = this.state.assetsBalance[accountId] ?? {};
|
|
702
|
+
for (const assetId of Object.keys(accountBalances)) {
|
|
703
|
+
const typedAssetId = assetId;
|
|
704
|
+
const asset = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetFromState).call(this, accountId, typedAssetId, {
|
|
705
|
+
chainIdSet,
|
|
706
|
+
assetTypeSet,
|
|
707
|
+
});
|
|
708
|
+
if (asset) {
|
|
709
|
+
result[typedAssetId] = asset;
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
return result;
|
|
713
|
+
}
|
|
653
714
|
async getAssetsPrice(accounts, options) {
|
|
654
715
|
const assets = await this.getAssets(accounts, {
|
|
655
716
|
chainIds: options?.chainIds,
|
|
@@ -1003,12 +1064,12 @@ export class AssetsController extends BaseController {
|
|
|
1003
1064
|
...resolvedRequest,
|
|
1004
1065
|
dataTypes: resolvedRequest.dataTypes.filter((dt) => dt !== 'metadata' && dt !== 'price'),
|
|
1005
1066
|
};
|
|
1006
|
-
// Graduate custom assets only when AccountsAPI /
|
|
1007
|
-
// RPC already fetches custom assets on purpose, and Snap handles
|
|
1008
|
-
// chains the rule does not apply to, so skip the middleware for
|
|
1067
|
+
// Graduate custom assets only when AccountsAPI / AccountActivity reports
|
|
1068
|
+
// them. RPC already fetches custom assets on purpose, and Snap handles
|
|
1069
|
+
// non-EVM chains the rule does not apply to, so skip the middleware for
|
|
1070
|
+
// those.
|
|
1009
1071
|
const shouldGraduateCustomAssets = sourceId === 'AccountsApiDataSource' ||
|
|
1010
|
-
sourceId === '
|
|
1011
|
-
sourceId === 'AccountActivityService';
|
|
1072
|
+
sourceId === 'AccountActivityDataSource';
|
|
1012
1073
|
const enrichmentSources = [
|
|
1013
1074
|
...(shouldGraduateCustomAssets
|
|
1014
1075
|
? [__classPrivateFieldGet(this, _AssetsController_customAssetGraduationMiddleware, "f")]
|
|
@@ -1060,7 +1121,7 @@ export class AssetsController extends BaseController {
|
|
|
1060
1121
|
subscriptionCount: __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").size,
|
|
1061
1122
|
});
|
|
1062
1123
|
// Destroy instantiated data sources
|
|
1063
|
-
__classPrivateFieldGet(this,
|
|
1124
|
+
__classPrivateFieldGet(this, _AssetsController_accountActivityDataSource, "f")?.destroy?.();
|
|
1064
1125
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f")?.destroy?.();
|
|
1065
1126
|
__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f")?.destroy?.();
|
|
1066
1127
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")?.destroy?.();
|
|
@@ -1075,7 +1136,9 @@ export class AssetsController extends BaseController {
|
|
|
1075
1136
|
this.messenger.unregisterActionHandler('AssetsController:getAssets');
|
|
1076
1137
|
this.messenger.unregisterActionHandler('AssetsController:getAssetsBalance');
|
|
1077
1138
|
this.messenger.unregisterActionHandler('AssetsController:getAssetMetadata');
|
|
1078
|
-
this.messenger.unregisterActionHandler('AssetsController:
|
|
1139
|
+
this.messenger.unregisterActionHandler('AssetsController:getAccountAssetByID');
|
|
1140
|
+
this.messenger.unregisterActionHandler('AssetsController:getAccountAssetsByIDs');
|
|
1141
|
+
this.messenger.unregisterActionHandler('AssetsController:getAccountAssetsByScope');
|
|
1079
1142
|
this.messenger.unregisterActionHandler('AssetsController:getAssetsPrice');
|
|
1080
1143
|
this.messenger.unregisterActionHandler('AssetsController:getExchangeRatesForBridge');
|
|
1081
1144
|
this.messenger.unregisterActionHandler('AssetsController:getStateForTransactionPay');
|
|
@@ -1087,7 +1150,7 @@ export class AssetsController extends BaseController {
|
|
|
1087
1150
|
this.messenger.unregisterActionHandler('AssetsController:setSelectedCurrency');
|
|
1088
1151
|
}
|
|
1089
1152
|
}
|
|
1090
|
-
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_captureException = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_accountRefreshMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_lastKnownAccountIds = new WeakMap(),
|
|
1153
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_captureException = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_accountRefreshMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_lastKnownAccountIds = new WeakMap(), _AssetsController_accountActivityDataSource = 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_customAssetGraduationMiddleware = new WeakMap(), _AssetsController_rpcFallbackMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_unsubscribeBasicFunctionality = new WeakMap(), _AssetsController_queryApiClient = new WeakMap(), _AssetsController_onActiveChainsUpdated = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_emitStateSizeTrace = function _AssetsController_emitStateSizeTrace() {
|
|
1091
1154
|
if (!__classPrivateFieldGet(this, _AssetsController_trace, "f") || __classPrivateFieldGet(this, _AssetsController_stateSizeReported, "f")) {
|
|
1092
1155
|
return;
|
|
1093
1156
|
}
|
|
@@ -1142,7 +1205,7 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1142
1205
|
return [];
|
|
1143
1206
|
}, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
|
|
1144
1207
|
return [
|
|
1145
|
-
__classPrivateFieldGet(this,
|
|
1208
|
+
__classPrivateFieldGet(this, _AssetsController_accountActivityDataSource, "f"),
|
|
1146
1209
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f"),
|
|
1147
1210
|
__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f"),
|
|
1148
1211
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
@@ -1261,12 +1324,6 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1261
1324
|
this.messenger.subscribe('TransactionController:transactionConfirmed', (transactionMeta) => {
|
|
1262
1325
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_onTransactionConfirmed).call(this, transactionMeta);
|
|
1263
1326
|
});
|
|
1264
|
-
// Real-time post-tx balances from AccountActivityService (same WS payload as
|
|
1265
|
-
// TokenBalancesController; BackendWebsocketDataSource may not receive the
|
|
1266
|
-
// callback when AccountActivityService owns the server subscription).
|
|
1267
|
-
this.messenger.subscribe('AccountActivityService:balanceUpdated', (event) => {
|
|
1268
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_onAccountActivityBalanceUpdated).call(this, event);
|
|
1269
|
-
});
|
|
1270
1327
|
}, _AssetsController_onUnapprovedTransactionAdded = function _AssetsController_onUnapprovedTransactionAdded(transactionMeta) {
|
|
1271
1328
|
const hexChainId = transactionMeta.chainId;
|
|
1272
1329
|
if (!hexChainId) {
|
|
@@ -1309,26 +1366,6 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1309
1366
|
}).catch((error) => {
|
|
1310
1367
|
log('Failed to refresh assets after transaction confirmed', { error });
|
|
1311
1368
|
});
|
|
1312
|
-
}, _AssetsController_onAccountActivityBalanceUpdated = function _AssetsController_onAccountActivityBalanceUpdated({ address, chain, updates, }) {
|
|
1313
|
-
const account = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).find((a) => a.address.startsWith('0x')
|
|
1314
|
-
? a.address.toLowerCase() === address.toLowerCase()
|
|
1315
|
-
: a.address === address);
|
|
1316
|
-
if (!account) {
|
|
1317
|
-
return;
|
|
1318
|
-
}
|
|
1319
|
-
const chainId = chain;
|
|
1320
|
-
const response = processAccountActivityBalanceUpdates(updates, account.id, (assetId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetType).call(this, assetId));
|
|
1321
|
-
if (!response.assetsBalance) {
|
|
1322
|
-
return;
|
|
1323
|
-
}
|
|
1324
|
-
const request = {
|
|
1325
|
-
accountsWithSupportedChains: [{ account, supportedChains: [chainId] }],
|
|
1326
|
-
chainIds: [chainId],
|
|
1327
|
-
dataTypes: ['balance', 'metadata'],
|
|
1328
|
-
};
|
|
1329
|
-
this.handleAssetsUpdate(response, 'AccountActivityService', request).catch((error) => {
|
|
1330
|
-
log('Failed to apply AccountActivityService balance update', { error });
|
|
1331
|
-
});
|
|
1332
1369
|
}, _AssetsController_updateActive = function _AssetsController_updateActive() {
|
|
1333
1370
|
const shouldRun = __classPrivateFieldGet(this, _AssetsController_uiOpen, "f") && __classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f");
|
|
1334
1371
|
if (shouldRun) {
|
|
@@ -1426,7 +1463,7 @@ async function _AssetsController_runStartupRefresh(accounts) {
|
|
|
1426
1463
|
}, _AssetsController_registerActionHandlers = function _AssetsController_registerActionHandlers() {
|
|
1427
1464
|
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
1428
1465
|
}, _AssetsController_handleActiveChainsUpdate = function _AssetsController_handleActiveChainsUpdate(dataSourceId, activeChains, previousChains) {
|
|
1429
|
-
if (!__classPrivateFieldGet(this, _AssetsController_isEnabled, "f").call(this)) {
|
|
1466
|
+
if (!__classPrivateFieldGet(this, _AssetsController_uiOpen, "f") || !__classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f") || !__classPrivateFieldGet(this, _AssetsController_isEnabled, "f").call(this)) {
|
|
1430
1467
|
return;
|
|
1431
1468
|
}
|
|
1432
1469
|
log('Data source active chains changed', {
|
|
@@ -1438,11 +1475,8 @@ async function _AssetsController_runStartupRefresh(accounts) {
|
|
|
1438
1475
|
const previousSet = new Set(previous);
|
|
1439
1476
|
const addedChains = activeChains.filter((ch) => !previousSet.has(ch));
|
|
1440
1477
|
const removedChains = previous.filter((ch) => !activeChains.includes(ch));
|
|
1478
|
+
// Refresh subscriptions to use updated data source availability.
|
|
1441
1479
|
if (addedChains.length > 0 || removedChains.length > 0) {
|
|
1442
|
-
// Refresh subscriptions to use updated data source availability.
|
|
1443
|
-
// No one-time fetch needed here — #handleEnabledNetworksChanged
|
|
1444
|
-
// handles fetches when the user enables a network, and
|
|
1445
|
-
// #subscribeAssets re-subscribes with the correct chain assignment.
|
|
1446
1480
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1447
1481
|
}
|
|
1448
1482
|
}, _AssetsController_executeMiddlewares =
|
|
@@ -1557,6 +1591,17 @@ async function _AssetsController_executeMiddlewares(params) {
|
|
|
1557
1591
|
});
|
|
1558
1592
|
}
|
|
1559
1593
|
return { response: result.response, durationByDataSource };
|
|
1594
|
+
}, _AssetsController_assertNonEmptyAccountId = function _AssetsController_assertNonEmptyAccountId(accountId, methodName) {
|
|
1595
|
+
if (typeof accountId !== 'string' || accountId.length === 0) {
|
|
1596
|
+
throw new Error(`AssetsController.${methodName}: accountId must be a non-empty string`);
|
|
1597
|
+
}
|
|
1598
|
+
}, _AssetsController_normalizeAssetIdOrThrow = function _AssetsController_normalizeAssetIdOrThrow(assetId, methodName) {
|
|
1599
|
+
try {
|
|
1600
|
+
return normalizeAssetId(assetId);
|
|
1601
|
+
}
|
|
1602
|
+
catch {
|
|
1603
|
+
throw new Error(`AssetsController.${methodName}: invalid CAIP-19 assetId "${assetId}"`);
|
|
1604
|
+
}
|
|
1560
1605
|
}, _AssetsController_fetchMissingPricesWithoutCache = function _AssetsController_fetchMissingPricesWithoutCache(accounts, chainIds) {
|
|
1561
1606
|
if (!__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this) || accounts.length === 0) {
|
|
1562
1607
|
return;
|
|
@@ -2047,8 +2092,10 @@ async function _AssetsController_executeMiddlewares(params) {
|
|
|
2047
2092
|
}, _AssetsController_subscribeAssetsBalance = function _AssetsController_subscribeAssetsBalance(accounts, chainIds) {
|
|
2048
2093
|
const chainToAccounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildChainToAccountsMap).call(this, accounts, new Set(chainIds));
|
|
2049
2094
|
const remainingChains = new Set(chainToAccounts.keys());
|
|
2050
|
-
// When basic functionality is on, use all balance data sources; when off,
|
|
2051
|
-
|
|
2095
|
+
// When basic functionality is on, use all balance data sources; when off,
|
|
2096
|
+
// RPC only.
|
|
2097
|
+
const isBasicFunctionality = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this);
|
|
2098
|
+
const balanceDataSources = isBasicFunctionality
|
|
2052
2099
|
? __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get)
|
|
2053
2100
|
: [__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")];
|
|
2054
2101
|
let rpcAssignedChains = new Set();
|
|
@@ -2350,14 +2397,11 @@ async function _AssetsController_handleAccountGroupChanged() {
|
|
|
2350
2397
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_fetchMissingPricesWithoutCache).call(this, accounts, [caipChainId]);
|
|
2351
2398
|
}, _AssetsController_refreshActiveChainsOnNetworkSwitch =
|
|
2352
2399
|
/**
|
|
2353
|
-
* Refresh data-source `activeChains` after an EVM network switch so API/
|
|
2400
|
+
* Refresh data-source `activeChains` after an EVM network switch so API/Rpc
|
|
2354
2401
|
* chain claiming is not stuck on an empty or stale init-time list.
|
|
2355
2402
|
*/
|
|
2356
2403
|
async function _AssetsController_refreshActiveChainsOnNetworkSwitch() {
|
|
2357
|
-
await
|
|
2358
|
-
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f").refreshActiveChains(),
|
|
2359
|
-
__classPrivateFieldGet(this, _AssetsController_backendWebsocketDataSource, "f").refreshActiveChains(),
|
|
2360
|
-
]);
|
|
2404
|
+
await __classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f").refreshActiveChains();
|
|
2361
2405
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f").refreshActiveChainsFromNetworkState();
|
|
2362
2406
|
}, _AssetsController_getSelectedEvmChainIdFromNetworkState = function _AssetsController_getSelectedEvmChainIdFromNetworkState(networkState) {
|
|
2363
2407
|
try {
|