@metamask-previews/assets-controller 1.0.0-preview-1346d4756 → 1.0.0-preview-d7935cb09
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 +1 -0
- package/dist/AssetsController.cjs +65 -13
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +31 -2
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +31 -2
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +66 -14
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs +6 -8
- 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 +4 -6
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.cjs +4 -2
- package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.mjs +4 -2
- package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
- package/dist/data-sources/PriceDataSource.cjs +13 -3
- package/dist/data-sources/PriceDataSource.cjs.map +1 -1
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
- package/dist/data-sources/PriceDataSource.mjs +13 -3
- package/dist/data-sources/PriceDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +79 -9
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts +21 -1
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts +21 -1
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +80 -10
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/SnapDataSource.cjs +16 -4
- package/dist/data-sources/SnapDataSource.cjs.map +1 -1
- package/dist/data-sources/SnapDataSource.d.cts +2 -1
- package/dist/data-sources/SnapDataSource.d.cts.map +1 -1
- package/dist/data-sources/SnapDataSource.d.mts +2 -1
- package/dist/data-sources/SnapDataSource.d.mts.map +1 -1
- package/dist/data-sources/SnapDataSource.mjs +16 -4
- package/dist/data-sources/SnapDataSource.mjs.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.cjs +613 -0
- package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -0
- package/dist/data-sources/StakedBalanceDataSource.d.cts +72 -0
- package/dist/data-sources/StakedBalanceDataSource.d.cts.map +1 -0
- package/dist/data-sources/StakedBalanceDataSource.d.mts +72 -0
- package/dist/data-sources/StakedBalanceDataSource.d.mts.map +1 -0
- package/dist/data-sources/StakedBalanceDataSource.mjs +609 -0
- package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -0
- package/dist/data-sources/TokenDataSource.cjs +5 -0
- 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 +5 -0
- package/dist/data-sources/TokenDataSource.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/index.cjs +5 -1
- package/dist/data-sources/evm-rpc-services/index.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/index.d.cts +1 -1
- package/dist/data-sources/evm-rpc-services/index.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/index.d.mts +1 -1
- package/dist/data-sources/evm-rpc-services/index.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/index.mjs +1 -1
- package/dist/data-sources/evm-rpc-services/index.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs +132 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts +78 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts +78 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs +126 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.cjs +6 -1
- package/dist/data-sources/evm-rpc-services/services/index.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/index.d.cts +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/index.d.mts +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/index.mjs +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/index.cjs +9 -1
- package/dist/data-sources/evm-rpc-services/utils/index.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/index.d.cts +2 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/index.d.mts +2 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/index.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/utils/index.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/parsing.cjs +39 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts +19 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts +19 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.mjs +34 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs +70 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.cts +25 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts +25 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs +64 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs.map +1 -0
- package/dist/data-sources/index.cjs +3 -1
- package/dist/data-sources/index.cjs.map +1 -1
- package/dist/data-sources/index.d.cts +1 -0
- package/dist/data-sources/index.d.cts.map +1 -1
- package/dist/data-sources/index.d.mts +1 -0
- package/dist/data-sources/index.d.mts.map +1 -1
- package/dist/data-sources/index.mjs +1 -0
- package/dist/data-sources/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
|
+
- Add `StakedBalanceDataSource` that polls supported staking contracts on enabled chains and merges staked balances into `assetsBalance`. Configurable via `stakedBalanceDataSourceConfig` (`enabled`, `pollInterval`); the controller subscribes to it when enabled and cleans up on destroy ([#7936](https://github.com/MetaMask/core/pull/7936))
|
|
12
13
|
- Add optional `trackMetaMetricsEvent` callback to measure and report first init/fetch historical time (duration in ms) to MetaMetrics when the initial asset fetch completes after unlock or app open ([#7871](https://github.com/MetaMask/core/pull/7871))
|
|
13
14
|
- Add `AccountsApiDataSourceConfig` and `PriceDataSourceConfig` types; add `accountsApiDataSourceConfig` and `priceDataSourceConfig` options to `AssetsControllerOptions` for per-data-source configuration (pollInterval, tokenDetectionEnabled, etc.). When `tokenDetectionEnabled` is false, `AccountsApiDataSource` only returns balances for tokens already in state and does not add new tokens ([#7926](https://github.com/MetaMask/core/pull/7926))
|
|
14
15
|
- Add `useExternalService` option to `TokenDetector`, `TokenDetectionOptions`, `RpcDataSourceConfig`, and `RpcDataSourceOptions`. Token detection runs only when both `tokenDetectionEnabled` and `useExternalService` are true and stops when either is false ([#7924](https://github.com/MetaMask/core/pull/7924))
|
|
@@ -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_trackMetaMetricsEvent, _AssetsController_firstInitFetchReported, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_selectedAccounts_get, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_registerActionHandlers, _AssetsController_executeMiddlewares, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged;
|
|
16
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trackMetaMetricsEvent, _AssetsController_firstInitFetchReported, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_selectedAccounts_get, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_constructionState, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_registerActionHandlers, _AssetsController_executeMiddlewares, _AssetsController_updateState, _AssetsController_getAssetsFromState, _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;
|
|
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");
|
|
@@ -26,6 +26,7 @@ const BackendWebsocketDataSource_1 = require("./data-sources/BackendWebsocketDat
|
|
|
26
26
|
const PriceDataSource_1 = require("./data-sources/PriceDataSource.cjs");
|
|
27
27
|
const RpcDataSource_1 = require("./data-sources/RpcDataSource.cjs");
|
|
28
28
|
const SnapDataSource_1 = require("./data-sources/SnapDataSource.cjs");
|
|
29
|
+
const StakedBalanceDataSource_1 = require("./data-sources/StakedBalanceDataSource.cjs");
|
|
29
30
|
const TokenDataSource_1 = require("./data-sources/TokenDataSource.cjs");
|
|
30
31
|
const logger_1 = require("./logger.cjs");
|
|
31
32
|
const DetectionMiddleware_1 = require("./middlewares/DetectionMiddleware.cjs");
|
|
@@ -182,7 +183,7 @@ function normalizeResponse(response) {
|
|
|
182
183
|
* - The controller does NOT manage polling - it simply receives pushed updates
|
|
183
184
|
*/
|
|
184
185
|
class AssetsController extends base_controller_1.BaseController {
|
|
185
|
-
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trackMetaMetricsEvent, accountsApiDataSourceConfig, priceDataSourceConfig, }) {
|
|
186
|
+
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trackMetaMetricsEvent, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, }) {
|
|
186
187
|
super({
|
|
187
188
|
name: CONTROLLER_NAME,
|
|
188
189
|
messenger,
|
|
@@ -217,16 +218,23 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
217
218
|
_AssetsController_accountsApiDataSource.set(this, void 0);
|
|
218
219
|
_AssetsController_snapDataSource.set(this, void 0);
|
|
219
220
|
_AssetsController_rpcDataSource.set(this, void 0);
|
|
221
|
+
_AssetsController_stakedBalanceDataSource.set(this, void 0);
|
|
220
222
|
_AssetsController_priceDataSource.set(this, void 0);
|
|
221
223
|
_AssetsController_detectionMiddleware.set(this, void 0);
|
|
222
224
|
_AssetsController_tokenDataSource.set(this, void 0);
|
|
223
225
|
_AssetsController_unsubscribeBasicFunctionality.set(this, null);
|
|
226
|
+
_AssetsController_constructionState.set(this, { initialized: false });
|
|
224
227
|
__classPrivateFieldSet(this, _AssetsController_isEnabled, isEnabled(), "f");
|
|
225
228
|
__classPrivateFieldSet(this, _AssetsController_isBasicFunctionality, isBasicFunctionality ?? (() => true), "f");
|
|
226
229
|
__classPrivateFieldSet(this, _AssetsController_defaultUpdateInterval, defaultUpdateInterval, "f");
|
|
227
230
|
__classPrivateFieldSet(this, _AssetsController_trackMetaMetricsEvent, trackMetaMetricsEvent, "f");
|
|
228
231
|
const rpcConfig = rpcDataSourceConfig ?? {};
|
|
229
|
-
const onActiveChainsUpdated = (dataSourceName, chains, previousChains) =>
|
|
232
|
+
const onActiveChainsUpdated = (dataSourceName, chains, previousChains) => {
|
|
233
|
+
if (!__classPrivateFieldGet(this, _AssetsController_constructionState, "f").initialized) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
this.handleActiveChainsUpdate(dataSourceName, chains, previousChains);
|
|
237
|
+
};
|
|
230
238
|
__classPrivateFieldSet(this, _AssetsController_backendWebsocketDataSource, new BackendWebsocketDataSource_1.BackendWebsocketDataSource({
|
|
231
239
|
messenger: this.messenger,
|
|
232
240
|
queryApiClient,
|
|
@@ -246,6 +254,11 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
246
254
|
onActiveChainsUpdated,
|
|
247
255
|
...rpcConfig,
|
|
248
256
|
}), "f");
|
|
257
|
+
__classPrivateFieldSet(this, _AssetsController_stakedBalanceDataSource, new StakedBalanceDataSource_1.StakedBalanceDataSource({
|
|
258
|
+
messenger: this.messenger,
|
|
259
|
+
onActiveChainsUpdated,
|
|
260
|
+
...stakedBalanceDataSourceConfig,
|
|
261
|
+
}), "f");
|
|
249
262
|
__classPrivateFieldSet(this, _AssetsController_tokenDataSource, new TokenDataSource_1.TokenDataSource({
|
|
250
263
|
queryApiClient,
|
|
251
264
|
}), "f");
|
|
@@ -264,6 +277,8 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
264
277
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_initializeState).call(this);
|
|
265
278
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeToEvents).call(this);
|
|
266
279
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_registerActionHandlers).call(this);
|
|
280
|
+
__classPrivateFieldGet(this, _AssetsController_constructionState, "f").initialized = true;
|
|
281
|
+
// Subscriptions start only on KeyringController:unlock -> #start(), not here.
|
|
267
282
|
// Subscribe to basic-functionality changes after construction so a synchronous
|
|
268
283
|
// onChange during subscribe cannot run before data sources are initialized.
|
|
269
284
|
if (subscribeToBasicFunctionalityChange) {
|
|
@@ -290,6 +305,9 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
290
305
|
* @param previousChains - Previous chains; used to compute added/removed.
|
|
291
306
|
*/
|
|
292
307
|
handleActiveChainsUpdate(dataSourceId, activeChains, previousChains) {
|
|
308
|
+
if (!__classPrivateFieldGet(this, _AssetsController_isEnabled, "f")) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
293
311
|
log('Data source active chains changed', {
|
|
294
312
|
dataSourceId,
|
|
295
313
|
chainCount: activeChains.length,
|
|
@@ -343,11 +361,16 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
343
361
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f"),
|
|
344
362
|
__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f"),
|
|
345
363
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
364
|
+
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
346
365
|
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
347
366
|
__classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"),
|
|
348
367
|
__classPrivateFieldGet(this, _AssetsController_priceDataSource, "f"),
|
|
349
368
|
]
|
|
350
|
-
: [
|
|
369
|
+
: [
|
|
370
|
+
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
371
|
+
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
372
|
+
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
373
|
+
];
|
|
351
374
|
const { response, durationByDataSource } = await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_executeMiddlewares).call(this, sources, request);
|
|
352
375
|
await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateState).call(this, response);
|
|
353
376
|
if (__classPrivateFieldGet(this, _AssetsController_trackMetaMetricsEvent, "f") && !__classPrivateFieldGet(this, _AssetsController_firstInitFetchReported, "f")) {
|
|
@@ -615,6 +638,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
615
638
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f")?.destroy?.();
|
|
616
639
|
__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f")?.destroy?.();
|
|
617
640
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")?.destroy?.();
|
|
641
|
+
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f")?.destroy?.();
|
|
618
642
|
// Stop all active subscriptions
|
|
619
643
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this);
|
|
620
644
|
if (__classPrivateFieldGet(this, _AssetsController_unsubscribeBasicFunctionality, "f")) {
|
|
@@ -634,7 +658,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
634
658
|
}
|
|
635
659
|
}
|
|
636
660
|
exports.AssetsController = AssetsController;
|
|
637
|
-
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trackMetaMetricsEvent = new WeakMap(), _AssetsController_firstInitFetchReported = 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_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_unsubscribeBasicFunctionality = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_selectedAccounts_get = function _AssetsController_selectedAccounts_get() {
|
|
661
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trackMetaMetricsEvent = new WeakMap(), _AssetsController_firstInitFetchReported = 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_constructionState = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_selectedAccounts_get = function _AssetsController_selectedAccounts_get() {
|
|
638
662
|
return this.messenger.call('AccountTreeController:getAccountsFromSelectedAccountGroup');
|
|
639
663
|
}, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
|
|
640
664
|
return [
|
|
@@ -670,7 +694,7 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
670
694
|
}
|
|
671
695
|
return chains;
|
|
672
696
|
}, _AssetsController_normalizeChainReference = function _AssetsController_normalizeChainReference(namespace, reference) {
|
|
673
|
-
if (namespace === 'eip155' &&
|
|
697
|
+
if (namespace === 'eip155' && (0, utils_1.isStrictHexString)(reference)) {
|
|
674
698
|
// Convert hex to decimal for EIP155 chains
|
|
675
699
|
return parseInt(reference, 16).toString();
|
|
676
700
|
}
|
|
@@ -949,13 +973,17 @@ async function _AssetsController_updateState(response) {
|
|
|
949
973
|
this.unsubscribeAssetsPrice();
|
|
950
974
|
// Stop balance subscriptions by properly notifying data sources via messenger
|
|
951
975
|
// This ensures data sources stop their polling timers.
|
|
952
|
-
// Use #allBalanceDataSources so we unsubscribe from
|
|
953
|
-
//
|
|
976
|
+
// Use #allBalanceDataSources + staked balance source so we unsubscribe from
|
|
977
|
+
// every source that may have been subscribed.
|
|
978
|
+
const allSources = [
|
|
979
|
+
...__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get),
|
|
980
|
+
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
981
|
+
];
|
|
954
982
|
const subscriptionKeys = [...__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").keys()];
|
|
955
983
|
for (const subscriptionKey of subscriptionKeys) {
|
|
956
984
|
if (subscriptionKey.startsWith('ds:')) {
|
|
957
985
|
const sourceId = subscriptionKey.slice(3);
|
|
958
|
-
const source =
|
|
986
|
+
const source = allSources.find((ds) => ds.getName() === sourceId);
|
|
959
987
|
if (source) {
|
|
960
988
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_unsubscribeDataSource).call(this, source);
|
|
961
989
|
}
|
|
@@ -970,6 +998,10 @@ async function _AssetsController_updateState(response) {
|
|
|
970
998
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssetsBalance).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [
|
|
971
999
|
...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
|
|
972
1000
|
]);
|
|
1001
|
+
// Subscribe to staked balance updates (separate from regular balance chain-claiming)
|
|
1002
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeStakedBalance).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [
|
|
1003
|
+
...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
|
|
1004
|
+
]);
|
|
973
1005
|
// Subscribe to price updates for all assets held by selected accounts
|
|
974
1006
|
this.subscribeAssetsPrice(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")]);
|
|
975
1007
|
}, _AssetsController_subscribeAssetsBalance = function _AssetsController_subscribeAssetsBalance(accounts, chainIds) {
|
|
@@ -1000,6 +1032,18 @@ async function _AssetsController_updateState(response) {
|
|
|
1000
1032
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeDataSource).call(this, source, accountsForSource, assignedChains);
|
|
1001
1033
|
}
|
|
1002
1034
|
}
|
|
1035
|
+
}, _AssetsController_subscribeStakedBalance = function _AssetsController_subscribeStakedBalance(accounts, chainIds) {
|
|
1036
|
+
const source = __classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f");
|
|
1037
|
+
if (!source) {
|
|
1038
|
+
return;
|
|
1039
|
+
}
|
|
1040
|
+
const availableChains = new Set(source.getActiveChainsSync());
|
|
1041
|
+
const assignedChains = chainIds.filter((chainId) => availableChains.has(chainId));
|
|
1042
|
+
if (assignedChains.length === 0) {
|
|
1043
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_unsubscribeDataSource).call(this, source);
|
|
1044
|
+
return;
|
|
1045
|
+
}
|
|
1046
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeDataSource).call(this, source, accounts, assignedChains);
|
|
1003
1047
|
}, _AssetsController_buildChainToAccountsMap = function _AssetsController_buildChainToAccountsMap(accounts, chainsToSubscribe) {
|
|
1004
1048
|
const chainToAccounts = new Map();
|
|
1005
1049
|
for (const account of accounts) {
|
|
@@ -1076,16 +1120,24 @@ async function _AssetsController_updateState(response) {
|
|
|
1076
1120
|
const scopes = account.scopes ?? [];
|
|
1077
1121
|
const result = [];
|
|
1078
1122
|
for (const scope of scopes) {
|
|
1079
|
-
const
|
|
1123
|
+
const scopeStr = scope;
|
|
1124
|
+
if (!(0, utils_1.isCaipChainId)(scopeStr)) {
|
|
1125
|
+
result.push(scope);
|
|
1126
|
+
continue;
|
|
1127
|
+
}
|
|
1128
|
+
const { namespace, reference } = (0, utils_1.parseCaipChainId)(scopeStr);
|
|
1080
1129
|
// Wildcard scope (e.g., "eip155:0" means all enabled chains in that namespace)
|
|
1081
1130
|
if (reference === '0') {
|
|
1082
1131
|
for (const chain of __classPrivateFieldGet(this, _AssetsController_enabledChains, "f")) {
|
|
1083
|
-
if (
|
|
1084
|
-
|
|
1132
|
+
if ((0, utils_1.isCaipChainId)(chain)) {
|
|
1133
|
+
const chainParsed = (0, utils_1.parseCaipChainId)(chain);
|
|
1134
|
+
if (chainParsed.namespace === namespace) {
|
|
1135
|
+
result.push(chain);
|
|
1136
|
+
}
|
|
1085
1137
|
}
|
|
1086
1138
|
}
|
|
1087
1139
|
}
|
|
1088
|
-
else if (namespace === 'eip155' &&
|
|
1140
|
+
else if (namespace === 'eip155' && (0, utils_1.isStrictHexString)(reference)) {
|
|
1089
1141
|
// Normalize hex to decimal for EIP155
|
|
1090
1142
|
result.push(`eip155:${parseInt(reference, 16)}`);
|
|
1091
1143
|
}
|