@metamask-previews/assets-controller 14.0.3-preview-64bce4b11 → 14.0.3-preview-a38f058
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 +4 -4
- package/dist/AssetsController.cjs +31 -146
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +5 -11
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +5 -11
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +31 -146
- package/dist/AssetsController.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,12 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
### Changed
|
|
11
11
|
|
|
12
|
+
- **BREAKING:** `AssetsControllerMessenger` now requires `AccountTreeController:isInitialized`, `ClientController:getState`, and `KeyringController:isUnlocked` so lifecycle checks read controller state on demand instead of mirroring it from events ([#10059](https://github.com/MetaMask/core/pull/10059))
|
|
13
|
+
- Hosts that restrict which actions flow through the `AssetsController` messenger must delegate these three actions
|
|
14
|
+
- `AccountTreeController:stateChange` is no longer subscribed to; remove it from allowed events if your messenger wiring lists events explicitly
|
|
15
|
+
- Revert to `selectedAccountGroupChange` for account-group switches; snap accounts added mid-session are picked up on restart ([#10059](https://github.com/MetaMask/core/pull/10059))
|
|
12
16
|
- Bump `@metamask/transaction-controller` from `^69.6.1` to `^69.7.0` ([#10046](https://github.com/MetaMask/core/pull/10046))
|
|
13
17
|
|
|
14
|
-
### Fixed
|
|
15
|
-
|
|
16
|
-
- Fix stale ARC USDC/EURC balances after confirmed swaps by running an authoritative RPC balance refresh for post-transaction asset updates ([#10058](https://github.com/MetaMask/core/pull/10058))
|
|
17
|
-
|
|
18
18
|
## [14.0.3]
|
|
19
19
|
|
|
20
20
|
### Changed
|
|
@@ -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,
|
|
16
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_captureException, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitStateSizeTrace, _AssetsController_controllerMutex, _AssetsController_accountRefreshMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_getSelectedAccounts, _AssetsController_isAccountTreeInitialized, _AssetsController_isUiOpen, _AssetsController_isKeyringUnlocked, _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_refreshAssetsForTransaction, _AssetsController_runSpamCleanup, _AssetsController_updateActive, _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");
|
|
@@ -305,15 +305,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
305
305
|
_AssetsController_firstInitFetchReported.set(this, false);
|
|
306
306
|
/** Whether we have already reported state size for this session (reset on #stop). */
|
|
307
307
|
_AssetsController_stateSizeReported.set(this, false);
|
|
308
|
-
/** Whether the client (UI) is open. Combined with #keyringUnlocked for #updateActive. */
|
|
309
|
-
_AssetsController_uiOpen.set(this, false);
|
|
310
|
-
/** Whether the keyring is unlocked. Combined with #uiOpen for #updateActive. */
|
|
311
|
-
_AssetsController_keyringUnlocked.set(this, false);
|
|
312
|
-
/**
|
|
313
|
-
* Whether `AccountTreeController` has finished `init()`. Unlock / UI-open
|
|
314
|
-
* alone must not start fetches — the tree can still be mid-build.
|
|
315
|
-
*/
|
|
316
|
-
_AssetsController_accountTreeInitialized.set(this, false);
|
|
317
308
|
_AssetsController_controllerMutex.set(this, new async_mutex_1.Mutex());
|
|
318
309
|
/** Serializes account-switch fetch + subscribe to prevent overlapping races. */
|
|
319
310
|
_AssetsController_accountRefreshMutex.set(this, new async_mutex_1.Mutex());
|
|
@@ -326,12 +317,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
326
317
|
_AssetsController_activeSubscriptions.set(this, new Map());
|
|
327
318
|
/** Currently enabled chains from NetworkEnablementController */
|
|
328
319
|
_AssetsController_enabledChains.set(this, new Set());
|
|
329
|
-
/**
|
|
330
|
-
* Snapshot of account IDs that were active when the last subscription/fetch
|
|
331
|
-
* cycle ran. Used by #handleAccountTreeStateChange to skip redundant
|
|
332
|
-
* re-subscriptions when the account set hasn't actually changed.
|
|
333
|
-
*/
|
|
334
|
-
_AssetsController_lastKnownAccountIds.set(this, new Set());
|
|
335
320
|
_AssetsController_accountActivityDataSource.set(this, void 0);
|
|
336
321
|
_AssetsController_accountsApiDataSource.set(this, void 0);
|
|
337
322
|
_AssetsController_snapDataSource.set(this, void 0);
|
|
@@ -473,27 +458,9 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
473
458
|
}
|
|
474
459
|
// Collect custom assets for all requested accounts
|
|
475
460
|
const customAssets = [];
|
|
476
|
-
const chainIdSet = new Set(chainIds);
|
|
477
461
|
for (const account of accounts) {
|
|
478
462
|
const accountCustomAssets = this.getCustomAssets(account.id);
|
|
479
463
|
customAssets.push(...accountCustomAssets);
|
|
480
|
-
// When refreshing after a confirmed transaction, also include graduated
|
|
481
|
-
// tokens — ERC-20s currently in assetsBalance but removed from
|
|
482
|
-
// customAssets by CustomAssetGraduationMiddleware. The Accounts API
|
|
483
|
-
// indexes incoming transfers (received tokens) slower than outgoing
|
|
484
|
-
// ones, so without a direct RPC query the "to" token in a swap keeps
|
|
485
|
-
// the stale API-cached balance until the next polling cycle.
|
|
486
|
-
if (options?.postTransaction) {
|
|
487
|
-
const stateBalances = this.state.assetsBalance[account.id] ?? {};
|
|
488
|
-
for (const assetId of Object.keys(stateBalances)) {
|
|
489
|
-
const assetChainId = assetId.split('/')[0];
|
|
490
|
-
if (chainIdSet.has(assetChainId) &&
|
|
491
|
-
!(0, index_js_1.isStakingContractAssetId)(assetId) &&
|
|
492
|
-
!customAssets.includes(assetId)) {
|
|
493
|
-
customAssets.push(assetId);
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
464
|
}
|
|
498
465
|
if (options?.forceUpdate) {
|
|
499
466
|
// Pipeline spans only on unlock/first-init fetch; later forceUpdates pass
|
|
@@ -592,15 +559,11 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
592
559
|
__classPrivateFieldSet(this, _AssetsController_firstInitFetchReported, true, "f");
|
|
593
560
|
// Background (slow) lane — flattened sibling of the fast lane (not nested
|
|
594
561
|
// inside its withTrace callback). Still fire-and-forget so UI is not blocked.
|
|
595
|
-
const slowPipelineChainIds = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSlowPipelineChainIds).call(this, chainIds, response
|
|
562
|
+
const slowPipelineChainIds = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSlowPipelineChainIds).call(this, chainIds, response);
|
|
596
563
|
if (slowPipelineChainIds.length > 0) {
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
}
|
|
601
|
-
else {
|
|
602
|
-
slowSources = [__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f"), __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")];
|
|
603
|
-
}
|
|
564
|
+
const slowSources = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)
|
|
565
|
+
? [__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f"), __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")]
|
|
566
|
+
: [__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")];
|
|
604
567
|
const slowRequest = { ...request, chainIds: slowPipelineChainIds };
|
|
605
568
|
(0, trace_js_1.withTrace)({
|
|
606
569
|
name: TRACE_BACKGROUND_FETCH,
|
|
@@ -1207,7 +1170,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
1207
1170
|
}
|
|
1208
1171
|
}
|
|
1209
1172
|
exports.AssetsController = AssetsController;
|
|
1210
|
-
_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(),
|
|
1173
|
+
_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_controllerMutex = new WeakMap(), _AssetsController_accountRefreshMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = 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() {
|
|
1211
1174
|
if (!__classPrivateFieldGet(this, _AssetsController_trace, "f") || __classPrivateFieldGet(this, _AssetsController_stateSizeReported, "f")) {
|
|
1212
1175
|
return;
|
|
1213
1176
|
}
|
|
@@ -1260,6 +1223,12 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1260
1223
|
return [selectedAccount];
|
|
1261
1224
|
}
|
|
1262
1225
|
return [];
|
|
1226
|
+
}, _AssetsController_isAccountTreeInitialized = function _AssetsController_isAccountTreeInitialized() {
|
|
1227
|
+
return this.messenger.call('AccountTreeController:isInitialized');
|
|
1228
|
+
}, _AssetsController_isUiOpen = function _AssetsController_isUiOpen() {
|
|
1229
|
+
return client_controller_1.clientControllerSelectors.selectIsUiOpen(this.messenger.call('ClientController:getState'));
|
|
1230
|
+
}, _AssetsController_isKeyringUnlocked = function _AssetsController_isKeyringUnlocked() {
|
|
1231
|
+
return this.messenger.call('KeyringController:isUnlocked');
|
|
1263
1232
|
}, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
|
|
1264
1233
|
return [
|
|
1265
1234
|
__classPrivateFieldGet(this, _AssetsController_accountActivityDataSource, "f"),
|
|
@@ -1319,16 +1288,14 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1319
1288
|
}
|
|
1320
1289
|
return reference;
|
|
1321
1290
|
}, _AssetsController_subscribeToEvents = function _AssetsController_subscribeToEvents() {
|
|
1322
|
-
// Subscribe to account group changes (when user switches between account groups like Account 1 -> Account 2)
|
|
1323
1291
|
this.messenger.subscribe('AccountTreeController:selectedAccountGroupChange', (groupId, previousGroupId) => {
|
|
1324
1292
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleAccountGroupChanged).call(this, groupId, previousGroupId).catch(console.error);
|
|
1325
1293
|
});
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleAccountTreeStateChange).call(this);
|
|
1294
|
+
this.messenger.subscribe('AccountTreeController:initialized', () => {
|
|
1295
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
1296
|
+
});
|
|
1297
|
+
this.messenger.subscribe('AccountTreeController:uninitialized', () => {
|
|
1298
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
1332
1299
|
});
|
|
1333
1300
|
// Subscribe to network enablement changes (only enabledNetworkMap)
|
|
1334
1301
|
this.messenger.subscribe('NetworkEnablementController:stateChange', ({ enabledNetworkMap }) => {
|
|
@@ -1355,20 +1322,17 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1355
1322
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleNetworkDidChange).call(this, networkState).catch(console.error);
|
|
1356
1323
|
});
|
|
1357
1324
|
// Client + Keyring lifecycle: only run when UI is open AND keyring is unlocked
|
|
1358
|
-
this.messenger.subscribe('ClientController:stateChange', (
|
|
1359
|
-
__classPrivateFieldSet(this, _AssetsController_uiOpen, isUiOpen, "f");
|
|
1325
|
+
this.messenger.subscribe('ClientController:stateChange', () => {
|
|
1360
1326
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
1361
1327
|
}, client_controller_1.clientControllerSelectors.selectIsUiOpen);
|
|
1362
1328
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
1363
1329
|
this.messenger.subscribe('KeyringController:unlock', async () => {
|
|
1364
|
-
__classPrivateFieldSet(this, _AssetsController_keyringUnlocked, true, "f");
|
|
1365
1330
|
await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_runSpamCleanup).call(this).catch(() => {
|
|
1366
1331
|
/* Do nothing */
|
|
1367
1332
|
});
|
|
1368
1333
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
1369
1334
|
});
|
|
1370
1335
|
this.messenger.subscribe('KeyringController:lock', () => {
|
|
1371
|
-
__classPrivateFieldSet(this, _AssetsController_keyringUnlocked, false, "f");
|
|
1372
1336
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
1373
1337
|
});
|
|
1374
1338
|
// Subscribe to unapproved transactions - TXs that need confirmation.
|
|
@@ -1382,35 +1346,19 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1382
1346
|
// RpcDataSource also listens for transactionConfirmed, but only refreshes
|
|
1383
1347
|
// chains it owns via an active subscription.
|
|
1384
1348
|
this.messenger.subscribe('TransactionController:transactionConfirmed', (transactionMeta) => {
|
|
1385
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_refreshAssetsForTransaction).call(this, transactionMeta
|
|
1386
|
-
postTransaction: true,
|
|
1387
|
-
});
|
|
1388
|
-
});
|
|
1389
|
-
// Start tracking only after the account tree is fully built. Unlock can
|
|
1390
|
-
// happen before `AccountTreeController.init()`, and `:stateChange` fires
|
|
1391
|
-
// for intermediate mutations during that build.
|
|
1392
|
-
this.messenger.subscribe('AccountTreeController:initialized', () => {
|
|
1393
|
-
__classPrivateFieldSet(this, _AssetsController_accountTreeInitialized, true, "f");
|
|
1394
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
1395
|
-
});
|
|
1396
|
-
this.messenger.subscribe('AccountTreeController:uninitialized', () => {
|
|
1397
|
-
__classPrivateFieldSet(this, _AssetsController_accountTreeInitialized, false, "f");
|
|
1398
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
1349
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_refreshAssetsForTransaction).call(this, transactionMeta);
|
|
1399
1350
|
});
|
|
1400
|
-
}, _AssetsController_refreshAssetsForTransaction = function _AssetsController_refreshAssetsForTransaction(transactionMeta
|
|
1351
|
+
}, _AssetsController_refreshAssetsForTransaction = function _AssetsController_refreshAssetsForTransaction(transactionMeta) {
|
|
1401
1352
|
const hexChainId = transactionMeta.chainId;
|
|
1402
1353
|
if (!hexChainId) {
|
|
1403
1354
|
return;
|
|
1404
1355
|
}
|
|
1405
1356
|
const caipChainId = `eip155:${parseInt(hexChainId, 16)}`;
|
|
1406
1357
|
// AccountActivity pushes live balance updates for its active chains; a
|
|
1407
|
-
//
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
__classPrivateFieldGet(this, _AssetsController_accountActivityDataSource, "f")
|
|
1412
|
-
.getActiveChainsSync()
|
|
1413
|
-
.includes(caipChainId)) {
|
|
1358
|
+
// force getAssets would be redundant and can race the WebSocket path.
|
|
1359
|
+
if (__classPrivateFieldGet(this, _AssetsController_accountActivityDataSource, "f")
|
|
1360
|
+
.getActiveChainsSync()
|
|
1361
|
+
.includes(caipChainId)) {
|
|
1414
1362
|
return;
|
|
1415
1363
|
}
|
|
1416
1364
|
const fromAddress = transactionMeta.txParams.from?.toLowerCase();
|
|
@@ -1424,13 +1372,12 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1424
1372
|
this.getAssets([matchedAccount], {
|
|
1425
1373
|
chainIds: [caipChainId],
|
|
1426
1374
|
forceUpdate: true,
|
|
1427
|
-
postTransaction: options?.postTransaction,
|
|
1428
1375
|
}).catch((error) => {
|
|
1429
1376
|
log('Failed to refresh assets after transaction event', { error });
|
|
1430
1377
|
});
|
|
1431
1378
|
}, _AssetsController_runSpamCleanup = async function _AssetsController_runSpamCleanup() {
|
|
1432
1379
|
try {
|
|
1433
|
-
const shouldRun = __classPrivateFieldGet(this,
|
|
1380
|
+
const shouldRun = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isKeyringUnlocked).call(this) &&
|
|
1434
1381
|
__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this) &&
|
|
1435
1382
|
(0, healAssetsInfoMetadata_js_1.isUnlockCleanupEnabled)(this.messenger.call('RemoteFeatureFlagController:getState')
|
|
1436
1383
|
?.remoteFeatureFlags);
|
|
@@ -1462,67 +1409,15 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1462
1409
|
log('Failed to run spam cleanup', { error });
|
|
1463
1410
|
}
|
|
1464
1411
|
}, _AssetsController_updateActive = function _AssetsController_updateActive() {
|
|
1465
|
-
const shouldRun = __classPrivateFieldGet(this,
|
|
1412
|
+
const shouldRun = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isUiOpen).call(this) &&
|
|
1413
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isKeyringUnlocked).call(this) &&
|
|
1414
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isAccountTreeInitialized).call(this);
|
|
1466
1415
|
if (shouldRun) {
|
|
1467
1416
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_start).call(this);
|
|
1468
1417
|
}
|
|
1469
1418
|
else {
|
|
1470
1419
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this);
|
|
1471
1420
|
}
|
|
1472
|
-
}, _AssetsController_handleAccountTreeStateChange = function _AssetsController_handleAccountTreeStateChange() {
|
|
1473
|
-
const shouldRun = __classPrivateFieldGet(this, _AssetsController_uiOpen, "f") &&
|
|
1474
|
-
__classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f") &&
|
|
1475
|
-
__classPrivateFieldGet(this, _AssetsController_accountTreeInitialized, "f") &&
|
|
1476
|
-
__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").size > 0;
|
|
1477
|
-
if (!shouldRun) {
|
|
1478
|
-
return;
|
|
1479
|
-
}
|
|
1480
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
1481
|
-
const currentIds = new Set(accounts.map((a) => a.id));
|
|
1482
|
-
const accountsChanged = currentIds.size !== __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size ||
|
|
1483
|
-
[...currentIds].some((id) => !__classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").has(id));
|
|
1484
|
-
if (!accountsChanged) {
|
|
1485
|
-
return;
|
|
1486
|
-
}
|
|
1487
|
-
const hasOverlap = [...currentIds].some((id) => __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").has(id));
|
|
1488
|
-
if (!hasOverlap && __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size > 0) {
|
|
1489
|
-
return;
|
|
1490
|
-
}
|
|
1491
|
-
log('Account tree changed with new accounts, re-subscribing', {
|
|
1492
|
-
previousCount: __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size,
|
|
1493
|
-
currentCount: currentIds.size,
|
|
1494
|
-
});
|
|
1495
|
-
const newAccounts = accounts.filter((account) => !__classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").has(account.id));
|
|
1496
|
-
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, currentIds, "f");
|
|
1497
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureNativeBalancesDefaultZero).call(this);
|
|
1498
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureDefaultTrackedAssetsSeeded).call(this);
|
|
1499
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_runAccountTreeRefresh).call(this, accounts, newAccounts).catch((error) => {
|
|
1500
|
-
log('Failed to refresh assets after tree change', error);
|
|
1501
|
-
});
|
|
1502
|
-
}, _AssetsController_runAccountTreeRefresh = async function _AssetsController_runAccountTreeRefresh(accounts, newAccounts = []) {
|
|
1503
|
-
const releaseLock = await __classPrivateFieldGet(this, _AssetsController_accountRefreshMutex, "f").acquire();
|
|
1504
|
-
try {
|
|
1505
|
-
await this.getAssets(accounts, {
|
|
1506
|
-
chainIds: [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")],
|
|
1507
|
-
forceUpdate: true,
|
|
1508
|
-
});
|
|
1509
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this, { skipInitialFetch: true });
|
|
1510
|
-
if (newAccounts.length > 0) {
|
|
1511
|
-
await this.getAssets(newAccounts, {
|
|
1512
|
-
chainIds: [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")],
|
|
1513
|
-
forceUpdate: true,
|
|
1514
|
-
});
|
|
1515
|
-
}
|
|
1516
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_fetchMissingPricesWithoutCache).call(this, accounts, [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")]);
|
|
1517
|
-
}
|
|
1518
|
-
catch (error) {
|
|
1519
|
-
log('Failed to fetch assets after tree change', error);
|
|
1520
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this, { skipInitialFetch: true });
|
|
1521
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_fetchMissingPricesWithoutCache).call(this, accounts, [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")]);
|
|
1522
|
-
}
|
|
1523
|
-
finally {
|
|
1524
|
-
releaseLock();
|
|
1525
|
-
}
|
|
1526
1421
|
}, _AssetsController_runStartupRefresh =
|
|
1527
1422
|
/**
|
|
1528
1423
|
* Force-fetch balances then subscribe. Used on unlock / first startup.
|
|
@@ -1557,7 +1452,7 @@ async function _AssetsController_runStartupRefresh(accounts) {
|
|
|
1557
1452
|
}, _AssetsController_registerActionHandlers = function _AssetsController_registerActionHandlers() {
|
|
1558
1453
|
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
1559
1454
|
}, _AssetsController_handleActiveChainsUpdate = function _AssetsController_handleActiveChainsUpdate(dataSourceId, activeChains, previousChains) {
|
|
1560
|
-
if (!__classPrivateFieldGet(this,
|
|
1455
|
+
if (!__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isUiOpen).call(this) || !__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isKeyringUnlocked).call(this) || !__classPrivateFieldGet(this, _AssetsController_isEnabled, "f").call(this)) {
|
|
1561
1456
|
return;
|
|
1562
1457
|
}
|
|
1563
1458
|
log('Data source active chains changed', {
|
|
@@ -1775,11 +1670,7 @@ async function _AssetsController_executeMiddlewares(params) {
|
|
|
1775
1670
|
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_resolveNativeAssetIds).call(this, __classPrivateFieldGet(this, _AssetsController_enabledChains, "f"));
|
|
1776
1671
|
}, _AssetsController_getNativeAssetIdsForAccount = function _AssetsController_getNativeAssetIdsForAccount(account) {
|
|
1777
1672
|
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_resolveNativeAssetIds).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getEnabledChainsForAccount).call(this, account));
|
|
1778
|
-
}, _AssetsController_getSlowPipelineChainIds = function _AssetsController_getSlowPipelineChainIds(chainIds, fastResponse
|
|
1779
|
-
// Post-transaction: always run RPC to override potentially stale Accounts API data.
|
|
1780
|
-
if (options?.forceAll) {
|
|
1781
|
-
return chainIds;
|
|
1782
|
-
}
|
|
1673
|
+
}, _AssetsController_getSlowPipelineChainIds = function _AssetsController_getSlowPipelineChainIds(chainIds, fastResponse) {
|
|
1783
1674
|
const accountsApiChains = new Set(__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f").getActiveChainsSync());
|
|
1784
1675
|
return chainIds.filter((chainId) => {
|
|
1785
1676
|
if (fastResponse.errors?.[chainId]) {
|
|
@@ -2134,7 +2025,6 @@ async function _AssetsController_executeMiddlewares(params) {
|
|
|
2134
2025
|
selectedAccountCount: accounts.length,
|
|
2135
2026
|
enabledChainCount: chainIds.length,
|
|
2136
2027
|
});
|
|
2137
|
-
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(accounts.map((a) => a.id)), "f");
|
|
2138
2028
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_runStartupRefresh).call(this, accounts).catch((error) => {
|
|
2139
2029
|
log('Failed to start asset tracking', error);
|
|
2140
2030
|
});
|
|
@@ -2145,7 +2035,6 @@ async function _AssetsController_executeMiddlewares(params) {
|
|
|
2145
2035
|
});
|
|
2146
2036
|
__classPrivateFieldSet(this, _AssetsController_firstInitFetchReported, false, "f");
|
|
2147
2037
|
__classPrivateFieldSet(this, _AssetsController_stateSizeReported, false, "f");
|
|
2148
|
-
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(), "f");
|
|
2149
2038
|
// Stop price subscription first (uses direct messenger call)
|
|
2150
2039
|
this.unsubscribeAssetsPrice();
|
|
2151
2040
|
// Stop balance subscriptions by properly notifying data sources via messenger
|
|
@@ -2414,7 +2303,6 @@ async function _AssetsController_executeMiddlewares(params) {
|
|
|
2414
2303
|
// EVENT HANDLERS
|
|
2415
2304
|
// ============================================================================
|
|
2416
2305
|
async function _AssetsController_handleAccountGroupChanged(groupId, previousGroupId = '') {
|
|
2417
|
-
// The selected account group can be empty during onboarding or wallet reset.
|
|
2418
2306
|
if (!groupId) {
|
|
2419
2307
|
return;
|
|
2420
2308
|
}
|
|
@@ -2435,7 +2323,6 @@ async function _AssetsController_handleAccountGroupChanged(groupId, previousGrou
|
|
|
2435
2323
|
groupId,
|
|
2436
2324
|
previousGroupId,
|
|
2437
2325
|
});
|
|
2438
|
-
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(accounts.map((a) => a.id)), "f");
|
|
2439
2326
|
const releaseLock = await __classPrivateFieldGet(this, _AssetsController_accountRefreshMutex, "f").acquire();
|
|
2440
2327
|
try {
|
|
2441
2328
|
if (accounts.length > 0) {
|
|
@@ -2446,8 +2333,6 @@ async function _AssetsController_handleAccountGroupChanged(groupId, previousGrou
|
|
|
2446
2333
|
}
|
|
2447
2334
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureNativeBalancesDefaultZero).call(this);
|
|
2448
2335
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureDefaultTrackedAssetsSeeded).call(this);
|
|
2449
|
-
// Subscribe after seed so the price poll sees natives / defaults.
|
|
2450
|
-
// Balances were just force-fetched — skip AccountsApi's subscribe-time poll.
|
|
2451
2336
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this, { skipInitialFetch: true });
|
|
2452
2337
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_fetchMissingPricesWithoutCache).call(this, accounts, [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")]);
|
|
2453
2338
|
}
|
|
@@ -2545,7 +2430,7 @@ async function _AssetsController_refreshActiveChainsOnNetworkSwitch() {
|
|
|
2545
2430
|
* @param networkState - NetworkController state after the switch.
|
|
2546
2431
|
*/
|
|
2547
2432
|
async function _AssetsController_handleNetworkDidChange(networkState) {
|
|
2548
|
-
if (!__classPrivateFieldGet(this,
|
|
2433
|
+
if (!__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isUiOpen).call(this) || !__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isKeyringUnlocked).call(this) || !__classPrivateFieldGet(this, _AssetsController_isEnabled, "f").call(this)) {
|
|
2549
2434
|
return;
|
|
2550
2435
|
}
|
|
2551
2436
|
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|