@metamask-previews/assets-controller 1.0.0-preview-1346d4756 → 1.0.0-preview-0cc7da31a
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 +69 -14
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +7 -2
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +7 -2
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +70 -15
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs +9 -11
- 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 +7 -9
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.cjs +6 -4
- 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 +6 -4
- 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 +8 -47
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts +8 -47
- 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 +609 -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 +605 -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 +47 -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 +25 -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 +25 -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 +39 -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 +68 -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 +62 -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 +3 -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_pricePollInterval, _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,
|
|
@@ -199,6 +200,8 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
199
200
|
_AssetsController_isBasicFunctionality.set(this, void 0);
|
|
200
201
|
/** Default update interval hint passed to data sources */
|
|
201
202
|
_AssetsController_defaultUpdateInterval.set(this, void 0);
|
|
203
|
+
/** Price subscription poll interval from priceDataSourceConfig (used when subscribeAssetsPrice gets no updateInterval). */
|
|
204
|
+
_AssetsController_pricePollInterval.set(this, void 0);
|
|
202
205
|
/** Optional callback for first init/fetch MetaMetrics (duration). */
|
|
203
206
|
_AssetsController_trackMetaMetricsEvent.set(this, void 0);
|
|
204
207
|
/** Whether we have already reported first init fetch for this session (reset on #stop). */
|
|
@@ -217,16 +220,24 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
217
220
|
_AssetsController_accountsApiDataSource.set(this, void 0);
|
|
218
221
|
_AssetsController_snapDataSource.set(this, void 0);
|
|
219
222
|
_AssetsController_rpcDataSource.set(this, void 0);
|
|
223
|
+
_AssetsController_stakedBalanceDataSource.set(this, void 0);
|
|
220
224
|
_AssetsController_priceDataSource.set(this, void 0);
|
|
221
225
|
_AssetsController_detectionMiddleware.set(this, void 0);
|
|
222
226
|
_AssetsController_tokenDataSource.set(this, void 0);
|
|
223
227
|
_AssetsController_unsubscribeBasicFunctionality.set(this, null);
|
|
228
|
+
_AssetsController_constructionState.set(this, { initialized: false });
|
|
224
229
|
__classPrivateFieldSet(this, _AssetsController_isEnabled, isEnabled(), "f");
|
|
225
230
|
__classPrivateFieldSet(this, _AssetsController_isBasicFunctionality, isBasicFunctionality ?? (() => true), "f");
|
|
226
231
|
__classPrivateFieldSet(this, _AssetsController_defaultUpdateInterval, defaultUpdateInterval, "f");
|
|
232
|
+
__classPrivateFieldSet(this, _AssetsController_pricePollInterval, priceDataSourceConfig?.pollInterval, "f");
|
|
227
233
|
__classPrivateFieldSet(this, _AssetsController_trackMetaMetricsEvent, trackMetaMetricsEvent, "f");
|
|
228
234
|
const rpcConfig = rpcDataSourceConfig ?? {};
|
|
229
|
-
const onActiveChainsUpdated = (dataSourceName, chains, previousChains) =>
|
|
235
|
+
const onActiveChainsUpdated = (dataSourceName, chains, previousChains) => {
|
|
236
|
+
if (!__classPrivateFieldGet(this, _AssetsController_constructionState, "f").initialized) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
this.handleActiveChainsUpdate(dataSourceName, chains, previousChains);
|
|
240
|
+
};
|
|
230
241
|
__classPrivateFieldSet(this, _AssetsController_backendWebsocketDataSource, new BackendWebsocketDataSource_1.BackendWebsocketDataSource({
|
|
231
242
|
messenger: this.messenger,
|
|
232
243
|
queryApiClient,
|
|
@@ -246,6 +257,11 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
246
257
|
onActiveChainsUpdated,
|
|
247
258
|
...rpcConfig,
|
|
248
259
|
}), "f");
|
|
260
|
+
__classPrivateFieldSet(this, _AssetsController_stakedBalanceDataSource, new StakedBalanceDataSource_1.StakedBalanceDataSource({
|
|
261
|
+
messenger: this.messenger,
|
|
262
|
+
onActiveChainsUpdated,
|
|
263
|
+
...stakedBalanceDataSourceConfig,
|
|
264
|
+
}), "f");
|
|
249
265
|
__classPrivateFieldSet(this, _AssetsController_tokenDataSource, new TokenDataSource_1.TokenDataSource({
|
|
250
266
|
queryApiClient,
|
|
251
267
|
}), "f");
|
|
@@ -264,6 +280,8 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
264
280
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_initializeState).call(this);
|
|
265
281
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeToEvents).call(this);
|
|
266
282
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_registerActionHandlers).call(this);
|
|
283
|
+
__classPrivateFieldGet(this, _AssetsController_constructionState, "f").initialized = true;
|
|
284
|
+
// Subscriptions start only on KeyringController:unlock -> #start(), not here.
|
|
267
285
|
// Subscribe to basic-functionality changes after construction so a synchronous
|
|
268
286
|
// onChange during subscribe cannot run before data sources are initialized.
|
|
269
287
|
if (subscribeToBasicFunctionalityChange) {
|
|
@@ -290,6 +308,9 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
290
308
|
* @param previousChains - Previous chains; used to compute added/removed.
|
|
291
309
|
*/
|
|
292
310
|
handleActiveChainsUpdate(dataSourceId, activeChains, previousChains) {
|
|
311
|
+
if (!__classPrivateFieldGet(this, _AssetsController_isEnabled, "f")) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
293
314
|
log('Data source active chains changed', {
|
|
294
315
|
dataSourceId,
|
|
295
316
|
chainCount: activeChains.length,
|
|
@@ -343,11 +364,16 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
343
364
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f"),
|
|
344
365
|
__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f"),
|
|
345
366
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
367
|
+
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
346
368
|
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
347
369
|
__classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"),
|
|
348
370
|
__classPrivateFieldGet(this, _AssetsController_priceDataSource, "f"),
|
|
349
371
|
]
|
|
350
|
-
: [
|
|
372
|
+
: [
|
|
373
|
+
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
374
|
+
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
375
|
+
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
376
|
+
];
|
|
351
377
|
const { response, durationByDataSource } = await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_executeMiddlewares).call(this, sources, request);
|
|
352
378
|
await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateState).call(this, response);
|
|
353
379
|
if (__classPrivateFieldGet(this, _AssetsController_trackMetaMetricsEvent, "f") && !__classPrivateFieldGet(this, _AssetsController_firstInitFetchReported, "f")) {
|
|
@@ -527,7 +553,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
527
553
|
if (!__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)) {
|
|
528
554
|
return;
|
|
529
555
|
}
|
|
530
|
-
const { updateInterval = __classPrivateFieldGet(this, _AssetsController_defaultUpdateInterval, "f") } = options;
|
|
556
|
+
const { updateInterval = __classPrivateFieldGet(this, _AssetsController_pricePollInterval, "f") ?? __classPrivateFieldGet(this, _AssetsController_defaultUpdateInterval, "f"), } = options;
|
|
531
557
|
const subscriptionKey = 'ds:PriceDataSource';
|
|
532
558
|
const existingSubscription = __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").get(subscriptionKey);
|
|
533
559
|
const isUpdate = existingSubscription !== undefined;
|
|
@@ -615,6 +641,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
615
641
|
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f")?.destroy?.();
|
|
616
642
|
__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f")?.destroy?.();
|
|
617
643
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")?.destroy?.();
|
|
644
|
+
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f")?.destroy?.();
|
|
618
645
|
// Stop all active subscriptions
|
|
619
646
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this);
|
|
620
647
|
if (__classPrivateFieldGet(this, _AssetsController_unsubscribeBasicFunctionality, "f")) {
|
|
@@ -634,7 +661,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
634
661
|
}
|
|
635
662
|
}
|
|
636
663
|
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() {
|
|
664
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_pricePollInterval = 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
665
|
return this.messenger.call('AccountTreeController:getAccountsFromSelectedAccountGroup');
|
|
639
666
|
}, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
|
|
640
667
|
return [
|
|
@@ -670,7 +697,7 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
670
697
|
}
|
|
671
698
|
return chains;
|
|
672
699
|
}, _AssetsController_normalizeChainReference = function _AssetsController_normalizeChainReference(namespace, reference) {
|
|
673
|
-
if (namespace === 'eip155' &&
|
|
700
|
+
if (namespace === 'eip155' && (0, utils_1.isStrictHexString)(reference)) {
|
|
674
701
|
// Convert hex to decimal for EIP155 chains
|
|
675
702
|
return parseInt(reference, 16).toString();
|
|
676
703
|
}
|
|
@@ -949,13 +976,17 @@ async function _AssetsController_updateState(response) {
|
|
|
949
976
|
this.unsubscribeAssetsPrice();
|
|
950
977
|
// Stop balance subscriptions by properly notifying data sources via messenger
|
|
951
978
|
// This ensures data sources stop their polling timers.
|
|
952
|
-
// Use #allBalanceDataSources so we unsubscribe from
|
|
953
|
-
//
|
|
979
|
+
// Use #allBalanceDataSources + staked balance source so we unsubscribe from
|
|
980
|
+
// every source that may have been subscribed.
|
|
981
|
+
const allSources = [
|
|
982
|
+
...__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get),
|
|
983
|
+
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
984
|
+
];
|
|
954
985
|
const subscriptionKeys = [...__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").keys()];
|
|
955
986
|
for (const subscriptionKey of subscriptionKeys) {
|
|
956
987
|
if (subscriptionKey.startsWith('ds:')) {
|
|
957
988
|
const sourceId = subscriptionKey.slice(3);
|
|
958
|
-
const source =
|
|
989
|
+
const source = allSources.find((ds) => ds.getName() === sourceId);
|
|
959
990
|
if (source) {
|
|
960
991
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_unsubscribeDataSource).call(this, source);
|
|
961
992
|
}
|
|
@@ -970,6 +1001,10 @@ async function _AssetsController_updateState(response) {
|
|
|
970
1001
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssetsBalance).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [
|
|
971
1002
|
...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
|
|
972
1003
|
]);
|
|
1004
|
+
// Subscribe to staked balance updates (separate from regular balance chain-claiming)
|
|
1005
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeStakedBalance).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [
|
|
1006
|
+
...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
|
|
1007
|
+
]);
|
|
973
1008
|
// Subscribe to price updates for all assets held by selected accounts
|
|
974
1009
|
this.subscribeAssetsPrice(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")]);
|
|
975
1010
|
}, _AssetsController_subscribeAssetsBalance = function _AssetsController_subscribeAssetsBalance(accounts, chainIds) {
|
|
@@ -1000,6 +1035,18 @@ async function _AssetsController_updateState(response) {
|
|
|
1000
1035
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeDataSource).call(this, source, accountsForSource, assignedChains);
|
|
1001
1036
|
}
|
|
1002
1037
|
}
|
|
1038
|
+
}, _AssetsController_subscribeStakedBalance = function _AssetsController_subscribeStakedBalance(accounts, chainIds) {
|
|
1039
|
+
const source = __classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f");
|
|
1040
|
+
if (!source) {
|
|
1041
|
+
return;
|
|
1042
|
+
}
|
|
1043
|
+
const availableChains = new Set(source.getActiveChainsSync());
|
|
1044
|
+
const assignedChains = chainIds.filter((chainId) => availableChains.has(chainId));
|
|
1045
|
+
if (assignedChains.length === 0) {
|
|
1046
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_unsubscribeDataSource).call(this, source);
|
|
1047
|
+
return;
|
|
1048
|
+
}
|
|
1049
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeDataSource).call(this, source, accounts, assignedChains);
|
|
1003
1050
|
}, _AssetsController_buildChainToAccountsMap = function _AssetsController_buildChainToAccountsMap(accounts, chainsToSubscribe) {
|
|
1004
1051
|
const chainToAccounts = new Map();
|
|
1005
1052
|
for (const account of accounts) {
|
|
@@ -1076,16 +1123,24 @@ async function _AssetsController_updateState(response) {
|
|
|
1076
1123
|
const scopes = account.scopes ?? [];
|
|
1077
1124
|
const result = [];
|
|
1078
1125
|
for (const scope of scopes) {
|
|
1079
|
-
const
|
|
1126
|
+
const scopeStr = scope;
|
|
1127
|
+
if (!(0, utils_1.isCaipChainId)(scopeStr)) {
|
|
1128
|
+
result.push(scope);
|
|
1129
|
+
continue;
|
|
1130
|
+
}
|
|
1131
|
+
const { namespace, reference } = (0, utils_1.parseCaipChainId)(scopeStr);
|
|
1080
1132
|
// Wildcard scope (e.g., "eip155:0" means all enabled chains in that namespace)
|
|
1081
1133
|
if (reference === '0') {
|
|
1082
1134
|
for (const chain of __classPrivateFieldGet(this, _AssetsController_enabledChains, "f")) {
|
|
1083
|
-
if (
|
|
1084
|
-
|
|
1135
|
+
if ((0, utils_1.isCaipChainId)(chain)) {
|
|
1136
|
+
const chainParsed = (0, utils_1.parseCaipChainId)(chain);
|
|
1137
|
+
if (chainParsed.namespace === namespace) {
|
|
1138
|
+
result.push(chain);
|
|
1139
|
+
}
|
|
1085
1140
|
}
|
|
1086
1141
|
}
|
|
1087
1142
|
}
|
|
1088
|
-
else if (namespace === 'eip155' &&
|
|
1143
|
+
else if (namespace === 'eip155' && (0, utils_1.isStrictHexString)(reference)) {
|
|
1089
1144
|
// Normalize hex to decimal for EIP155
|
|
1090
1145
|
result.push(`eip155:${parseInt(reference, 16)}`);
|
|
1091
1146
|
}
|