@metamask-previews/assets-controller 5.0.0-preview-d5ac72227 → 5.0.0-preview-2e231093e
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 -16
- package/dist/AssetsController.cjs +29 -76
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +2 -10
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +2 -10
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +29 -76
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.cjs +30 -46
- package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.cts +2 -2
- package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.mts +2 -2
- package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.mjs +30 -46
- package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
- package/dist/data-sources/PriceDataSource.cjs +1 -1
- package/dist/data-sources/PriceDataSource.cjs.map +1 -1
- package/dist/data-sources/PriceDataSource.d.cts +1 -1
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
- package/dist/data-sources/PriceDataSource.d.mts +1 -1
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
- package/dist/data-sources/PriceDataSource.mjs +1 -1
- package/dist/data-sources/PriceDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +4 -14
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts +2 -6
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts +2 -6
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +4 -14
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/SnapDataSource.cjs +1 -1
- package/dist/data-sources/SnapDataSource.cjs.map +1 -1
- package/dist/data-sources/SnapDataSource.d.cts +2 -2
- package/dist/data-sources/SnapDataSource.d.cts.map +1 -1
- package/dist/data-sources/SnapDataSource.d.mts +2 -2
- package/dist/data-sources/SnapDataSource.d.mts.map +1 -1
- package/dist/data-sources/SnapDataSource.mjs +1 -1
- package/dist/data-sources/SnapDataSource.mjs.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.cjs +1 -1
- package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.d.cts +2 -2
- package/dist/data-sources/StakedBalanceDataSource.d.cts.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.d.mts +2 -2
- package/dist/data-sources/StakedBalanceDataSource.d.mts.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.mjs +1 -1
- package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -1
- package/dist/data-sources/TokenDataSource.cjs +4 -13
- 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 +4 -13
- package/dist/data-sources/TokenDataSource.mjs.map +1 -1
- package/dist/utils/formatStateForTransactionPay.cjs.map +1 -1
- package/dist/utils/formatStateForTransactionPay.d.cts +1 -1
- package/dist/utils/formatStateForTransactionPay.d.cts.map +1 -1
- package/dist/utils/formatStateForTransactionPay.d.mts +1 -1
- package/dist/utils/formatStateForTransactionPay.d.mts.map +1 -1
- package/dist/utils/formatStateForTransactionPay.mjs.map +1 -1
- package/package.json +15 -16
package/CHANGELOG.md
CHANGED
|
@@ -7,27 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
### Added
|
|
11
|
-
|
|
12
|
-
- Added `isOnboarded` option to `AssetsControllerOptions` and `RpcDataSourceConfig` ([#8430](https://github.com/MetaMask/core/pull/8430))
|
|
13
|
-
- When `isOnboarded` returns `false`, `RpcDataSource` skips `fetch` and `subscribe` calls, preventing on-chain RPC calls before onboarding is complete.
|
|
14
|
-
- Defaults to `() => true` so existing consumers are unaffected.
|
|
15
|
-
|
|
16
10
|
### Changed
|
|
17
11
|
|
|
18
|
-
- Bump `@metamask/transaction-controller` from `^64.0.0` to `^64.
|
|
12
|
+
- Bump `@metamask/transaction-controller` from `^64.0.0` to `^64.2.0` ([#8432](https://github.com/MetaMask/core/pull/8432), [#8447](https://github.com/MetaMask/core/pull/8447))
|
|
19
13
|
|
|
20
14
|
### Fixed
|
|
21
15
|
|
|
22
|
-
- `AssetsController` now re-subscribes to all data sources when `AccountTreeController` state changes after initial startup, ensuring snap accounts and their chains are included ([#8430](https://github.com/MetaMask/core/pull/8430))
|
|
23
|
-
- Previously, `#start()` would create subscriptions before snap accounts were available, and its idempotency guard prevented re-subscription when the full account list arrived.
|
|
24
|
-
- Added `#handleAccountTreeStateChange()` which forces a full re-subscription and re-fetch when the account tree updates, picking up all accounts including snaps.
|
|
25
|
-
- Added `AccountsController:getSelectedAccount` as a fallback in `#getSelectedAccounts()` for when the account tree is not yet initialized.
|
|
26
|
-
- `TokenDataSource` no longer filters out user-imported custom assets with the `MIN_TOKEN_OCCURRENCES` spam filter or Blockaid bulk scan ([#8430](https://github.com/MetaMask/core/pull/8430))
|
|
27
|
-
- Tokens present in `customAssets` state now bypass the EVM occurrence threshold and non-EVM Blockaid scan, ensuring manually imported assets always appear.
|
|
28
|
-
- `BackendWebsocketDataSource` now properly releases chains to `AccountsApiDataSource` when the websocket is disconnected or disabled ([#8430](https://github.com/MetaMask/core/pull/8430))
|
|
29
|
-
- Previously, `BackendWebsocketDataSource` eagerly claimed all supported chains on initialization regardless of connection state, preventing `AccountsApiDataSource` from polling.
|
|
30
|
-
- Chains are now only claimed when the websocket is connected. On disconnect, chains are released so the chain-claiming loop assigns them to `AccountsApiDataSource` for polling fallback. On reconnect, chains are reclaimed.
|
|
31
16
|
- `AssetsController` no longer silently skips asset fetching on startup for returning users ([#8412](https://github.com/MetaMask/core/pull/8412))
|
|
32
17
|
- Previously, `#start()` was called at keyring unlock before `AccountTreeController.init()` had built the account tree, causing `#selectedAccounts` to return an empty array and all subscriptions and fetches to be skipped. `selectedAccountGroupChange` does not fire when the persisted selected group is unchanged, leaving the controller idle.
|
|
33
18
|
- Now subscribes to `AccountTreeController:stateChange` (the base-controller event guaranteed to fire when `init()` calls `this.update()`), so the controller re-evaluates its active state once accounts are available.
|
|
@@ -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_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitTrace, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains,
|
|
16
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitTrace, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _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_onActiveChainsUpdated, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_updateActive, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_resolveNativeAssetIds, _AssetsController_getNativeAssetIdsForEnabledChains, _AssetsController_getNativeAssetIdsForAccount, _AssetsController_ensureNativeBalancesDefaultZero, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_shouldHideNativeToken, _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");
|
|
@@ -210,7 +210,7 @@ function normalizeResponse(response) {
|
|
|
210
210
|
* - The controller does NOT manage polling - it simply receives pushed updates
|
|
211
211
|
*/
|
|
212
212
|
class AssetsController extends base_controller_1.BaseController {
|
|
213
|
-
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig,
|
|
213
|
+
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, }) {
|
|
214
214
|
super({
|
|
215
215
|
name: CONTROLLER_NAME,
|
|
216
216
|
messenger,
|
|
@@ -247,12 +247,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
247
247
|
_AssetsController_activeSubscriptions.set(this, new Map());
|
|
248
248
|
/** Currently enabled chains from NetworkEnablementController */
|
|
249
249
|
_AssetsController_enabledChains.set(this, new Set());
|
|
250
|
-
/**
|
|
251
|
-
* Snapshot of account IDs that were active when the last subscription/fetch
|
|
252
|
-
* cycle ran. Used by #handleAccountTreeStateChange to skip redundant
|
|
253
|
-
* re-subscriptions when the account set hasn't actually changed.
|
|
254
|
-
*/
|
|
255
|
-
_AssetsController_lastKnownAccountIds.set(this, new Set());
|
|
256
250
|
_AssetsController_backendWebsocketDataSource.set(this, void 0);
|
|
257
251
|
_AssetsController_accountsApiDataSource.set(this, void 0);
|
|
258
252
|
_AssetsController_snapDataSource.set(this, void 0);
|
|
@@ -297,7 +291,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
297
291
|
messenger: this.messenger,
|
|
298
292
|
onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
|
|
299
293
|
...rpcConfig,
|
|
300
|
-
isOnboarded: rpcConfig.isOnboarded ?? isOnboarded,
|
|
301
294
|
}), "f");
|
|
302
295
|
__classPrivateFieldSet(this, _AssetsController_stakedBalanceDataSource, new StakedBalanceDataSource_1.StakedBalanceDataSource({
|
|
303
296
|
messenger: this.messenger,
|
|
@@ -515,7 +508,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
515
508
|
* @returns Legacy-compatible state for transaction-pay-controller.
|
|
516
509
|
*/
|
|
517
510
|
getStateForTransactionPay() {
|
|
518
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
511
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get);
|
|
519
512
|
const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
|
|
520
513
|
const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
|
|
521
514
|
return (0, utils_2.formatStateForTransactionPay)({
|
|
@@ -588,7 +581,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
588
581
|
}
|
|
589
582
|
});
|
|
590
583
|
// Fetch data for the newly added custom asset (merge to preserve other chains)
|
|
591
|
-
const account = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
584
|
+
const account = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).find((a) => a.id === accountId);
|
|
592
585
|
if (account) {
|
|
593
586
|
const chainId = extractChainId(normalizedAssetId);
|
|
594
587
|
await this.getAssets([account], {
|
|
@@ -687,7 +680,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
687
680
|
if (!__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)) {
|
|
688
681
|
return;
|
|
689
682
|
}
|
|
690
|
-
this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "
|
|
683
|
+
this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), {
|
|
691
684
|
forceUpdate: true,
|
|
692
685
|
dataTypes: ['price'],
|
|
693
686
|
assetsForPriceUpdate: Object.values(this.state.assetsBalance).flatMap((balances) => Object.keys(balances)),
|
|
@@ -712,11 +705,10 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
712
705
|
const subscriptionKey = 'ds:PriceDataSource';
|
|
713
706
|
const existingSubscription = __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").get(subscriptionKey);
|
|
714
707
|
const isUpdate = existingSubscription !== undefined;
|
|
715
|
-
const request = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildDataRequest).call(this, accounts, chainIds, {
|
|
716
|
-
dataTypes: ['price'],
|
|
717
|
-
});
|
|
718
708
|
const subscribeReq = {
|
|
719
|
-
request,
|
|
709
|
+
request: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildDataRequest).call(this, accounts, chainIds, {
|
|
710
|
+
dataTypes: ['price'],
|
|
711
|
+
}),
|
|
720
712
|
subscriptionId: subscriptionKey,
|
|
721
713
|
isUpdate,
|
|
722
714
|
onAssetsUpdate: (response) => this.handleAssetsUpdate(response, 'PriceDataSource'),
|
|
@@ -844,7 +836,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
844
836
|
}
|
|
845
837
|
}
|
|
846
838
|
exports.AssetsController = AssetsController;
|
|
847
|
-
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(),
|
|
839
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = 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_onActiveChainsUpdated = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_emitTrace = function _AssetsController_emitTrace(name, data, tags = {
|
|
848
840
|
controller: 'AssetsController',
|
|
849
841
|
}) {
|
|
850
842
|
if (!__classPrivateFieldGet(this, _AssetsController_trace, "f")) {
|
|
@@ -890,16 +882,8 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
890
882
|
price_entries: Object.keys(assetsPrice).length,
|
|
891
883
|
custom_asset_entries: customAssetEntries,
|
|
892
884
|
});
|
|
893
|
-
},
|
|
894
|
-
|
|
895
|
-
if (accounts.length > 0) {
|
|
896
|
-
return accounts;
|
|
897
|
-
}
|
|
898
|
-
const selectedAccount = this.messenger.call('AccountsController:getSelectedAccount');
|
|
899
|
-
if (selectedAccount) {
|
|
900
|
-
return [selectedAccount];
|
|
901
|
-
}
|
|
902
|
-
return [];
|
|
885
|
+
}, _AssetsController_selectedAccounts_get = function _AssetsController_selectedAccounts_get() {
|
|
886
|
+
return this.messenger.call('AccountTreeController:getAccountsFromSelectedAccountGroup');
|
|
903
887
|
}, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
|
|
904
888
|
return [
|
|
905
889
|
__classPrivateFieldGet(this, _AssetsController_backendWebsocketDataSource, "f"),
|
|
@@ -952,7 +936,7 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
952
936
|
// when init() calls this.update(). #start() is idempotent so
|
|
953
937
|
// repeated fires are safe.
|
|
954
938
|
this.messenger.subscribe('AccountTreeController:stateChange', () => {
|
|
955
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m",
|
|
939
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
956
940
|
});
|
|
957
941
|
// Subscribe to network enablement changes (only enabledNetworkMap)
|
|
958
942
|
this.messenger.subscribe('NetworkEnablementController:stateChange', ({ enabledNetworkMap }) => {
|
|
@@ -979,36 +963,6 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
979
963
|
else {
|
|
980
964
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this);
|
|
981
965
|
}
|
|
982
|
-
}, _AssetsController_handleAccountTreeStateChange = function _AssetsController_handleAccountTreeStateChange() {
|
|
983
|
-
const shouldRun = __classPrivateFieldGet(this, _AssetsController_uiOpen, "f") && __classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f");
|
|
984
|
-
if (!shouldRun) {
|
|
985
|
-
return;
|
|
986
|
-
}
|
|
987
|
-
if (__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").size > 0) {
|
|
988
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
989
|
-
const currentIds = new Set(accounts.map((a) => a.id));
|
|
990
|
-
const accountsChanged = currentIds.size !== __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size ||
|
|
991
|
-
[...currentIds].some((id) => !__classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").has(id));
|
|
992
|
-
if (!accountsChanged) {
|
|
993
|
-
return;
|
|
994
|
-
}
|
|
995
|
-
log('Account tree changed with new accounts, re-subscribing', {
|
|
996
|
-
previousCount: __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size,
|
|
997
|
-
currentCount: currentIds.size,
|
|
998
|
-
});
|
|
999
|
-
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, currentIds, "f");
|
|
1000
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1001
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureNativeBalancesDefaultZero).call(this);
|
|
1002
|
-
this.getAssets(accounts, {
|
|
1003
|
-
chainIds: [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")],
|
|
1004
|
-
forceUpdate: true,
|
|
1005
|
-
}).catch((error) => {
|
|
1006
|
-
log('Failed to fetch assets after tree change', error);
|
|
1007
|
-
});
|
|
1008
|
-
}
|
|
1009
|
-
else {
|
|
1010
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_start).call(this);
|
|
1011
|
-
}
|
|
1012
966
|
}, _AssetsController_registerActionHandlers = function _AssetsController_registerActionHandlers() {
|
|
1013
967
|
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
1014
968
|
}, _AssetsController_handleActiveChainsUpdate = function _AssetsController_handleActiveChainsUpdate(dataSourceId, activeChains, previousChains) {
|
|
@@ -1029,11 +983,11 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1029
983
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1030
984
|
}
|
|
1031
985
|
// If chains were added and we have selected accounts, do one-time fetch
|
|
1032
|
-
if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
986
|
+
if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).length > 0) {
|
|
1033
987
|
const addedEnabledChains = addedChains.filter((chain) => __classPrivateFieldGet(this, _AssetsController_enabledChains, "f").has(chain));
|
|
1034
988
|
if (addedEnabledChains.length > 0) {
|
|
1035
989
|
log('Fetching balances for newly added chains', { addedEnabledChains });
|
|
1036
|
-
this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "
|
|
990
|
+
this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), {
|
|
1037
991
|
chainIds: addedEnabledChains,
|
|
1038
992
|
forceUpdate: true,
|
|
1039
993
|
updateMode: 'merge',
|
|
@@ -1132,7 +1086,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1132
1086
|
}, _AssetsController_getNativeAssetIdsForAccount = function _AssetsController_getNativeAssetIdsForAccount(account) {
|
|
1133
1087
|
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_resolveNativeAssetIds).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getEnabledChainsForAccount).call(this, account));
|
|
1134
1088
|
}, _AssetsController_ensureNativeBalancesDefaultZero = function _AssetsController_ensureNativeBalancesDefaultZero() {
|
|
1135
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1089
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get);
|
|
1136
1090
|
if (accounts.length === 0) {
|
|
1137
1091
|
return;
|
|
1138
1092
|
}
|
|
@@ -1221,7 +1175,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1221
1175
|
return next;
|
|
1222
1176
|
})();
|
|
1223
1177
|
// Ensure native tokens have an entry (0 if missing) for chains this account supports
|
|
1224
|
-
const account = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1178
|
+
const account = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).find((a) => a.id === accountId);
|
|
1225
1179
|
const nativeAssetIdsForAccount = account
|
|
1226
1180
|
? __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetIdsForAccount).call(this, account)
|
|
1227
1181
|
: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetIdsForEnabledChains).call(this);
|
|
@@ -1399,7 +1353,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1399
1353
|
return 'fungible';
|
|
1400
1354
|
}
|
|
1401
1355
|
}, _AssetsController_start = function _AssetsController_start() {
|
|
1402
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1356
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get);
|
|
1403
1357
|
const chainIds = [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")];
|
|
1404
1358
|
if (accounts.length === 0 || chainIds.length === 0) {
|
|
1405
1359
|
return;
|
|
@@ -1411,7 +1365,6 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1411
1365
|
selectedAccountCount: accounts.length,
|
|
1412
1366
|
enabledChainCount: chainIds.length,
|
|
1413
1367
|
});
|
|
1414
|
-
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(accounts.map((a) => a.id)), "f");
|
|
1415
1368
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1416
1369
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureNativeBalancesDefaultZero).call(this);
|
|
1417
1370
|
this.getAssets(accounts, {
|
|
@@ -1427,7 +1380,6 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1427
1380
|
});
|
|
1428
1381
|
__classPrivateFieldSet(this, _AssetsController_firstInitFetchReported, false, "f");
|
|
1429
1382
|
__classPrivateFieldSet(this, _AssetsController_stateSizeReported, false, "f");
|
|
1430
|
-
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(), "f");
|
|
1431
1383
|
// Stop price subscription first (uses direct messenger call)
|
|
1432
1384
|
this.unsubscribeAssetsPrice();
|
|
1433
1385
|
// Stop balance subscriptions by properly notifying data sources via messenger
|
|
@@ -1450,21 +1402,23 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1450
1402
|
}
|
|
1451
1403
|
__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").clear();
|
|
1452
1404
|
}, _AssetsController_subscribeAssets = function _AssetsController_subscribeAssets() {
|
|
1453
|
-
|
|
1454
|
-
const enabledChains = [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")];
|
|
1455
|
-
if (accounts.length === 0 || enabledChains.length === 0) {
|
|
1405
|
+
if (__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).length === 0 || __classPrivateFieldGet(this, _AssetsController_enabledChains, "f").size === 0) {
|
|
1456
1406
|
return;
|
|
1457
1407
|
}
|
|
1458
1408
|
// Subscribe to balance updates (batched by data source)
|
|
1459
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssetsBalance).call(this,
|
|
1409
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssetsBalance).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [
|
|
1410
|
+
...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
|
|
1411
|
+
]);
|
|
1460
1412
|
// Subscribe to staked balance updates (separate from regular balance chain-claiming)
|
|
1461
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeStakedBalance).call(this,
|
|
1413
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeStakedBalance).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [
|
|
1414
|
+
...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
|
|
1415
|
+
]);
|
|
1462
1416
|
// Subscribe to price updates for all assets held by selected accounts
|
|
1463
|
-
this.subscribeAssetsPrice(
|
|
1417
|
+
this.subscribeAssetsPrice(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")]);
|
|
1464
1418
|
}, _AssetsController_subscribeAssetsBalance = function _AssetsController_subscribeAssetsBalance(accounts, chainIds) {
|
|
1465
1419
|
const chainToAccounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildChainToAccountsMap).call(this, accounts, new Set(chainIds));
|
|
1466
1420
|
const remainingChains = new Set(chainToAccounts.keys());
|
|
1467
|
-
// When basic functionality is on, use all balance data sources; when off, RPC only.
|
|
1421
|
+
// When basic functionality is on (getter true), use all balance data sources; when off (getter false), RPC only.
|
|
1468
1422
|
const balanceDataSources = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)
|
|
1469
1423
|
? __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get)
|
|
1470
1424
|
: [__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")];
|
|
@@ -1612,12 +1566,11 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
1612
1566
|
// EVENT HANDLERS
|
|
1613
1567
|
// ============================================================================
|
|
1614
1568
|
async function _AssetsController_handleAccountGroupChanged() {
|
|
1615
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1569
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get);
|
|
1616
1570
|
log('Account group changed', {
|
|
1617
1571
|
accountCount: accounts.length,
|
|
1618
1572
|
accountIds: accounts.map((a) => a.id),
|
|
1619
1573
|
});
|
|
1620
|
-
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(accounts.map((a) => a.id)), "f");
|
|
1621
1574
|
// Subscribe and fetch for the new account group
|
|
1622
1575
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1623
1576
|
if (accounts.length > 0) {
|
|
@@ -1656,8 +1609,8 @@ async function _AssetsController_handleAccountGroupChanged() {
|
|
|
1656
1609
|
// Refresh subscriptions for new chain set
|
|
1657
1610
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1658
1611
|
// Do one-time fetch for newly enabled chains; merge so we keep existing chain balances
|
|
1659
|
-
if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1660
|
-
await this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "
|
|
1612
|
+
if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).length > 0) {
|
|
1613
|
+
await this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), {
|
|
1661
1614
|
chainIds: addedChains,
|
|
1662
1615
|
forceUpdate: true,
|
|
1663
1616
|
updateMode: 'merge',
|