@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
|
@@ -13,7 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
13
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
|
-
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,
|
|
16
|
+
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;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.AssetsController = exports.getDefaultAssetsControllerState = void 0;
|
|
19
19
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -22,8 +22,8 @@ const utils_1 = require("@metamask/utils");
|
|
|
22
22
|
const async_mutex_1 = require("async-mutex");
|
|
23
23
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
24
24
|
const lodash_1 = require("lodash");
|
|
25
|
+
const AccountActivityDataSource_js_1 = require("./data-sources/AccountActivityDataSource.cjs");
|
|
25
26
|
const AccountsApiDataSource_js_1 = require("./data-sources/AccountsApiDataSource.cjs");
|
|
26
|
-
const BackendWebsocketDataSource_js_1 = require("./data-sources/BackendWebsocketDataSource.cjs");
|
|
27
27
|
const assets_js_1 = require("./data-sources/evm-rpc-services/utils/assets.cjs");
|
|
28
28
|
const PriceDataSource_js_1 = require("./data-sources/PriceDataSource.cjs");
|
|
29
29
|
const RpcDataSource_js_1 = require("./data-sources/RpcDataSource.cjs");
|
|
@@ -41,7 +41,6 @@ const healAssetsInfoMetadata_js_1 = require("./migrations/healAssetsInfoMetadata
|
|
|
41
41
|
const constants_js_1 = require("./utils/constants.cjs");
|
|
42
42
|
const customAssetsRpcSupplement_js_1 = require("./utils/customAssetsRpcSupplement.cjs");
|
|
43
43
|
const index_js_1 = require("./utils/index.cjs");
|
|
44
|
-
const processAccountActivityBalanceUpdates_js_1 = require("./utils/processAccountActivityBalanceUpdates.cjs");
|
|
45
44
|
const trace_js_1 = require("./utils/trace.cjs");
|
|
46
45
|
const NATIVE_ASSETS_QUERY_KEY = ['nativeAssets'];
|
|
47
46
|
/** Stable empty map so memoized formatters are not busted by `?? {}` identity churn. */
|
|
@@ -55,7 +54,9 @@ const MESSENGER_EXPOSED_METHODS = [
|
|
|
55
54
|
'getAssets',
|
|
56
55
|
'getAssetsBalance',
|
|
57
56
|
'getAssetMetadata',
|
|
58
|
-
'
|
|
57
|
+
'getAccountAssetByID',
|
|
58
|
+
'getAccountAssetsByIDs',
|
|
59
|
+
'getAccountAssetsByScope',
|
|
59
60
|
'getAssetsPrice',
|
|
60
61
|
'getExchangeRatesForBridge',
|
|
61
62
|
'getStateForTransactionPay',
|
|
@@ -316,7 +317,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
316
317
|
* re-subscriptions when the account set hasn't actually changed.
|
|
317
318
|
*/
|
|
318
319
|
_AssetsController_lastKnownAccountIds.set(this, new Set());
|
|
319
|
-
|
|
320
|
+
_AssetsController_accountActivityDataSource.set(this, void 0);
|
|
320
321
|
_AssetsController_accountsApiDataSource.set(this, void 0);
|
|
321
322
|
_AssetsController_snapDataSource.set(this, void 0);
|
|
322
323
|
_AssetsController_rpcDataSource.set(this, void 0);
|
|
@@ -357,11 +358,11 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
357
358
|
});
|
|
358
359
|
}
|
|
359
360
|
}, "f");
|
|
360
|
-
__classPrivateFieldSet(this,
|
|
361
|
+
__classPrivateFieldSet(this, _AssetsController_accountActivityDataSource, new AccountActivityDataSource_js_1.AccountActivityDataSource({
|
|
361
362
|
messenger: this.messenger,
|
|
362
|
-
queryApiClient,
|
|
363
363
|
onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
|
|
364
364
|
getAssetType: (assetId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetType).call(this, assetId),
|
|
365
|
+
onAssetsUpdate: (response, request) => this.handleAssetsUpdate(response, __classPrivateFieldGet(this, _AssetsController_accountActivityDataSource, "f").getName(), request),
|
|
365
366
|
}), "f");
|
|
366
367
|
__classPrivateFieldSet(this, _AssetsController_accountsApiDataSource, new AccountsApiDataSource_js_1.AccountsApiDataSource({
|
|
367
368
|
messenger: this.messenger,
|
|
@@ -641,21 +642,81 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
641
642
|
* renderable asset (balance + metadata) exists for the account/asset pair.
|
|
642
643
|
* @throws If `accountId` is empty or `assetId` is not a valid CAIP-19 asset ID.
|
|
643
644
|
*/
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
}
|
|
648
|
-
let normalizedAssetId;
|
|
649
|
-
try {
|
|
650
|
-
normalizedAssetId = (0, index_js_1.normalizeAssetId)(assetId);
|
|
651
|
-
}
|
|
652
|
-
catch {
|
|
653
|
-
throw new Error(`AssetsController.getAsset: invalid CAIP-19 assetId "${assetId}"`);
|
|
654
|
-
}
|
|
645
|
+
getAccountAssetByID(accountId, assetId) {
|
|
646
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_assertNonEmptyAccountId).call(this, accountId, 'getAccountAssetByID');
|
|
647
|
+
const normalizedAssetId = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_normalizeAssetIdOrThrow).call(this, assetId, 'getAccountAssetByID');
|
|
655
648
|
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetFromState).call(this, accountId, normalizedAssetId, {
|
|
656
649
|
assetTypeSet: new Set(['fungible']),
|
|
657
650
|
});
|
|
658
651
|
}
|
|
652
|
+
/**
|
|
653
|
+
* Get multiple combined assets (balance + metadata + price + computed
|
|
654
|
+
* `fiatValue`) for an account directly from controller state.
|
|
655
|
+
*
|
|
656
|
+
* Applies the same state-composition and filtering rules as
|
|
657
|
+
* `getAccountAssetByID` to each requested asset ID. Asset IDs that do not
|
|
658
|
+
* resolve to a complete renderable asset (missing balance/metadata, hidden,
|
|
659
|
+
* or otherwise filtered out) are omitted from the result. Reads from
|
|
660
|
+
* current state only and does not trigger a data-source refresh.
|
|
661
|
+
*
|
|
662
|
+
* @param accountId - The account ID (`InternalAccount.id`, not an address).
|
|
663
|
+
* @param assetIds - The CAIP-19 asset IDs including chain scope
|
|
664
|
+
* (e.g. `eip155:1/erc20:0x...`).
|
|
665
|
+
* @returns A record of combined `Asset`s keyed by normalized CAIP-19 asset
|
|
666
|
+
* ID, containing only the requested assets that resolved.
|
|
667
|
+
* @throws If `accountId` is empty or any `assetIds` entry is not a valid
|
|
668
|
+
* CAIP-19 asset ID.
|
|
669
|
+
*/
|
|
670
|
+
getAccountAssetsByIDs(accountId, assetIds) {
|
|
671
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_assertNonEmptyAccountId).call(this, accountId, 'getAccountAssetsByIDs');
|
|
672
|
+
const result = Object.create(null);
|
|
673
|
+
for (const assetId of assetIds) {
|
|
674
|
+
const normalizedAssetId = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_normalizeAssetIdOrThrow).call(this, assetId, 'getAccountAssetsByIDs');
|
|
675
|
+
const asset = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetFromState).call(this, accountId, normalizedAssetId, {
|
|
676
|
+
assetTypeSet: new Set(['fungible']),
|
|
677
|
+
});
|
|
678
|
+
if (asset) {
|
|
679
|
+
result[normalizedAssetId] = asset;
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
return result;
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Get all combined assets (balance + metadata + price + computed
|
|
686
|
+
* `fiatValue`) an account holds on a given chain scope, directly from
|
|
687
|
+
* controller state.
|
|
688
|
+
*
|
|
689
|
+
* Applies the same state-composition and filtering rules as
|
|
690
|
+
* `getAccountAssetByID` (hidden or otherwise filtered assets are excluded).
|
|
691
|
+
* Reads from current state only and does not trigger a data-source refresh.
|
|
692
|
+
*
|
|
693
|
+
* @param accountId - The account ID (`InternalAccount.id`, not an address).
|
|
694
|
+
* @param scope - The CAIP-2 chain ID to filter by (e.g. `eip155:1`).
|
|
695
|
+
* @returns A record of combined `Asset`s keyed by CAIP-19 asset ID,
|
|
696
|
+
* containing only the account's assets on the given scope.
|
|
697
|
+
* @throws If `accountId` is empty or `scope` is not a valid CAIP-2 chain ID.
|
|
698
|
+
*/
|
|
699
|
+
getAccountAssetsByScope(accountId, scope) {
|
|
700
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_assertNonEmptyAccountId).call(this, accountId, 'getAccountAssetsByScope');
|
|
701
|
+
if (!(0, utils_1.isCaipChainId)(scope)) {
|
|
702
|
+
throw new Error(`AssetsController.getAccountAssetsByScope: invalid CAIP-2 scope "${String(scope)}"`);
|
|
703
|
+
}
|
|
704
|
+
const result = Object.create(null);
|
|
705
|
+
const chainIdSet = new Set([scope]);
|
|
706
|
+
const assetTypeSet = new Set(['fungible']);
|
|
707
|
+
const accountBalances = this.state.assetsBalance[accountId] ?? {};
|
|
708
|
+
for (const assetId of Object.keys(accountBalances)) {
|
|
709
|
+
const typedAssetId = assetId;
|
|
710
|
+
const asset = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetFromState).call(this, accountId, typedAssetId, {
|
|
711
|
+
chainIdSet,
|
|
712
|
+
assetTypeSet,
|
|
713
|
+
});
|
|
714
|
+
if (asset) {
|
|
715
|
+
result[typedAssetId] = asset;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
return result;
|
|
719
|
+
}
|
|
659
720
|
async getAssetsPrice(accounts, options) {
|
|
660
721
|
const assets = await this.getAssets(accounts, {
|
|
661
722
|
chainIds: options?.chainIds,
|
|
@@ -1009,12 +1070,12 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
1009
1070
|
...resolvedRequest,
|
|
1010
1071
|
dataTypes: resolvedRequest.dataTypes.filter((dt) => dt !== 'metadata' && dt !== 'price'),
|
|
1011
1072
|
};
|
|
1012
|
-
// Graduate custom assets only when AccountsAPI /
|
|
1013
|
-
// RPC already fetches custom assets on purpose, and Snap handles
|
|
1014
|
-
// chains the rule does not apply to, so skip the middleware for
|
|
1073
|
+
// Graduate custom assets only when AccountsAPI / AccountActivity reports
|
|
1074
|
+
// them. RPC already fetches custom assets on purpose, and Snap handles
|
|
1075
|
+
// non-EVM chains the rule does not apply to, so skip the middleware for
|
|
1076
|
+
// those.
|
|
1015
1077
|
const shouldGraduateCustomAssets = sourceId === 'AccountsApiDataSource' ||
|
|
1016
|
-
sourceId === '
|
|
1017
|
-
sourceId === 'AccountActivityService';
|
|
1078
|
+
sourceId === 'AccountActivityDataSource';
|
|
1018
1079
|
const enrichmentSources = [
|
|
1019
1080
|
...(shouldGraduateCustomAssets
|
|
1020
1081
|
? [__classPrivateFieldGet(this, _AssetsController_customAssetGraduationMiddleware, "f")]
|
|
@@ -1066,7 +1127,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
1066
1127
|
subscriptionCount: __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").size,
|
|
1067
1128
|
});
|
|
1068
1129
|
// Destroy instantiated data sources
|
|
1069
|
-
__classPrivateFieldGet(this,
|
|
1130
|
+
__classPrivateFieldGet(this, _AssetsController_accountActivityDataSource, "f")?.destroy?.();
|
|
1070
1131
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f")?.destroy?.();
|
|
1071
1132
|
__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f")?.destroy?.();
|
|
1072
1133
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")?.destroy?.();
|
|
@@ -1081,7 +1142,9 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
1081
1142
|
this.messenger.unregisterActionHandler('AssetsController:getAssets');
|
|
1082
1143
|
this.messenger.unregisterActionHandler('AssetsController:getAssetsBalance');
|
|
1083
1144
|
this.messenger.unregisterActionHandler('AssetsController:getAssetMetadata');
|
|
1084
|
-
this.messenger.unregisterActionHandler('AssetsController:
|
|
1145
|
+
this.messenger.unregisterActionHandler('AssetsController:getAccountAssetByID');
|
|
1146
|
+
this.messenger.unregisterActionHandler('AssetsController:getAccountAssetsByIDs');
|
|
1147
|
+
this.messenger.unregisterActionHandler('AssetsController:getAccountAssetsByScope');
|
|
1085
1148
|
this.messenger.unregisterActionHandler('AssetsController:getAssetsPrice');
|
|
1086
1149
|
this.messenger.unregisterActionHandler('AssetsController:getExchangeRatesForBridge');
|
|
1087
1150
|
this.messenger.unregisterActionHandler('AssetsController:getStateForTransactionPay');
|
|
@@ -1094,7 +1157,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
1094
1157
|
}
|
|
1095
1158
|
}
|
|
1096
1159
|
exports.AssetsController = AssetsController;
|
|
1097
|
-
_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(),
|
|
1160
|
+
_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() {
|
|
1098
1161
|
if (!__classPrivateFieldGet(this, _AssetsController_trace, "f") || __classPrivateFieldGet(this, _AssetsController_stateSizeReported, "f")) {
|
|
1099
1162
|
return;
|
|
1100
1163
|
}
|
|
@@ -1149,7 +1212,7 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1149
1212
|
return [];
|
|
1150
1213
|
}, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
|
|
1151
1214
|
return [
|
|
1152
|
-
__classPrivateFieldGet(this,
|
|
1215
|
+
__classPrivateFieldGet(this, _AssetsController_accountActivityDataSource, "f"),
|
|
1153
1216
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f"),
|
|
1154
1217
|
__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f"),
|
|
1155
1218
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
@@ -1268,12 +1331,6 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1268
1331
|
this.messenger.subscribe('TransactionController:transactionConfirmed', (transactionMeta) => {
|
|
1269
1332
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_onTransactionConfirmed).call(this, transactionMeta);
|
|
1270
1333
|
});
|
|
1271
|
-
// Real-time post-tx balances from AccountActivityService (same WS payload as
|
|
1272
|
-
// TokenBalancesController; BackendWebsocketDataSource may not receive the
|
|
1273
|
-
// callback when AccountActivityService owns the server subscription).
|
|
1274
|
-
this.messenger.subscribe('AccountActivityService:balanceUpdated', (event) => {
|
|
1275
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_onAccountActivityBalanceUpdated).call(this, event);
|
|
1276
|
-
});
|
|
1277
1334
|
}, _AssetsController_onUnapprovedTransactionAdded = function _AssetsController_onUnapprovedTransactionAdded(transactionMeta) {
|
|
1278
1335
|
const hexChainId = transactionMeta.chainId;
|
|
1279
1336
|
if (!hexChainId) {
|
|
@@ -1316,26 +1373,6 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1316
1373
|
}).catch((error) => {
|
|
1317
1374
|
log('Failed to refresh assets after transaction confirmed', { error });
|
|
1318
1375
|
});
|
|
1319
|
-
}, _AssetsController_onAccountActivityBalanceUpdated = function _AssetsController_onAccountActivityBalanceUpdated({ address, chain, updates, }) {
|
|
1320
|
-
const account = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).find((a) => a.address.startsWith('0x')
|
|
1321
|
-
? a.address.toLowerCase() === address.toLowerCase()
|
|
1322
|
-
: a.address === address);
|
|
1323
|
-
if (!account) {
|
|
1324
|
-
return;
|
|
1325
|
-
}
|
|
1326
|
-
const chainId = chain;
|
|
1327
|
-
const response = (0, processAccountActivityBalanceUpdates_js_1.processAccountActivityBalanceUpdates)(updates, account.id, (assetId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetType).call(this, assetId));
|
|
1328
|
-
if (!response.assetsBalance) {
|
|
1329
|
-
return;
|
|
1330
|
-
}
|
|
1331
|
-
const request = {
|
|
1332
|
-
accountsWithSupportedChains: [{ account, supportedChains: [chainId] }],
|
|
1333
|
-
chainIds: [chainId],
|
|
1334
|
-
dataTypes: ['balance', 'metadata'],
|
|
1335
|
-
};
|
|
1336
|
-
this.handleAssetsUpdate(response, 'AccountActivityService', request).catch((error) => {
|
|
1337
|
-
log('Failed to apply AccountActivityService balance update', { error });
|
|
1338
|
-
});
|
|
1339
1376
|
}, _AssetsController_updateActive = function _AssetsController_updateActive() {
|
|
1340
1377
|
const shouldRun = __classPrivateFieldGet(this, _AssetsController_uiOpen, "f") && __classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f");
|
|
1341
1378
|
if (shouldRun) {
|
|
@@ -1433,7 +1470,7 @@ async function _AssetsController_runStartupRefresh(accounts) {
|
|
|
1433
1470
|
}, _AssetsController_registerActionHandlers = function _AssetsController_registerActionHandlers() {
|
|
1434
1471
|
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
1435
1472
|
}, _AssetsController_handleActiveChainsUpdate = function _AssetsController_handleActiveChainsUpdate(dataSourceId, activeChains, previousChains) {
|
|
1436
|
-
if (!__classPrivateFieldGet(this, _AssetsController_isEnabled, "f").call(this)) {
|
|
1473
|
+
if (!__classPrivateFieldGet(this, _AssetsController_uiOpen, "f") || !__classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f") || !__classPrivateFieldGet(this, _AssetsController_isEnabled, "f").call(this)) {
|
|
1437
1474
|
return;
|
|
1438
1475
|
}
|
|
1439
1476
|
log('Data source active chains changed', {
|
|
@@ -1445,11 +1482,8 @@ async function _AssetsController_runStartupRefresh(accounts) {
|
|
|
1445
1482
|
const previousSet = new Set(previous);
|
|
1446
1483
|
const addedChains = activeChains.filter((ch) => !previousSet.has(ch));
|
|
1447
1484
|
const removedChains = previous.filter((ch) => !activeChains.includes(ch));
|
|
1485
|
+
// Refresh subscriptions to use updated data source availability.
|
|
1448
1486
|
if (addedChains.length > 0 || removedChains.length > 0) {
|
|
1449
|
-
// Refresh subscriptions to use updated data source availability.
|
|
1450
|
-
// No one-time fetch needed here — #handleEnabledNetworksChanged
|
|
1451
|
-
// handles fetches when the user enables a network, and
|
|
1452
|
-
// #subscribeAssets re-subscribes with the correct chain assignment.
|
|
1453
1487
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1454
1488
|
}
|
|
1455
1489
|
}, _AssetsController_executeMiddlewares =
|
|
@@ -1564,6 +1598,17 @@ async function _AssetsController_executeMiddlewares(params) {
|
|
|
1564
1598
|
});
|
|
1565
1599
|
}
|
|
1566
1600
|
return { response: result.response, durationByDataSource };
|
|
1601
|
+
}, _AssetsController_assertNonEmptyAccountId = function _AssetsController_assertNonEmptyAccountId(accountId, methodName) {
|
|
1602
|
+
if (typeof accountId !== 'string' || accountId.length === 0) {
|
|
1603
|
+
throw new Error(`AssetsController.${methodName}: accountId must be a non-empty string`);
|
|
1604
|
+
}
|
|
1605
|
+
}, _AssetsController_normalizeAssetIdOrThrow = function _AssetsController_normalizeAssetIdOrThrow(assetId, methodName) {
|
|
1606
|
+
try {
|
|
1607
|
+
return (0, index_js_1.normalizeAssetId)(assetId);
|
|
1608
|
+
}
|
|
1609
|
+
catch {
|
|
1610
|
+
throw new Error(`AssetsController.${methodName}: invalid CAIP-19 assetId "${assetId}"`);
|
|
1611
|
+
}
|
|
1567
1612
|
}, _AssetsController_fetchMissingPricesWithoutCache = function _AssetsController_fetchMissingPricesWithoutCache(accounts, chainIds) {
|
|
1568
1613
|
if (!__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this) || accounts.length === 0) {
|
|
1569
1614
|
return;
|
|
@@ -2054,8 +2099,10 @@ async function _AssetsController_executeMiddlewares(params) {
|
|
|
2054
2099
|
}, _AssetsController_subscribeAssetsBalance = function _AssetsController_subscribeAssetsBalance(accounts, chainIds) {
|
|
2055
2100
|
const chainToAccounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildChainToAccountsMap).call(this, accounts, new Set(chainIds));
|
|
2056
2101
|
const remainingChains = new Set(chainToAccounts.keys());
|
|
2057
|
-
// When basic functionality is on, use all balance data sources; when off,
|
|
2058
|
-
|
|
2102
|
+
// When basic functionality is on, use all balance data sources; when off,
|
|
2103
|
+
// RPC only.
|
|
2104
|
+
const isBasicFunctionality = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this);
|
|
2105
|
+
const balanceDataSources = isBasicFunctionality
|
|
2059
2106
|
? __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get)
|
|
2060
2107
|
: [__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")];
|
|
2061
2108
|
let rpcAssignedChains = new Set();
|
|
@@ -2357,14 +2404,11 @@ async function _AssetsController_handleAccountGroupChanged() {
|
|
|
2357
2404
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_fetchMissingPricesWithoutCache).call(this, accounts, [caipChainId]);
|
|
2358
2405
|
}, _AssetsController_refreshActiveChainsOnNetworkSwitch =
|
|
2359
2406
|
/**
|
|
2360
|
-
* Refresh data-source `activeChains` after an EVM network switch so API/
|
|
2407
|
+
* Refresh data-source `activeChains` after an EVM network switch so API/Rpc
|
|
2361
2408
|
* chain claiming is not stuck on an empty or stale init-time list.
|
|
2362
2409
|
*/
|
|
2363
2410
|
async function _AssetsController_refreshActiveChainsOnNetworkSwitch() {
|
|
2364
|
-
await
|
|
2365
|
-
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f").refreshActiveChains(),
|
|
2366
|
-
__classPrivateFieldGet(this, _AssetsController_backendWebsocketDataSource, "f").refreshActiveChains(),
|
|
2367
|
-
]);
|
|
2411
|
+
await __classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f").refreshActiveChains();
|
|
2368
2412
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f").refreshActiveChainsFromNetworkState();
|
|
2369
2413
|
}, _AssetsController_getSelectedEvmChainIdFromNetworkState = function _AssetsController_getSelectedEvmChainIdFromNetworkState(networkState) {
|
|
2370
2414
|
try {
|