@metamask-previews/assets-controller 13.1.2-preview-823dcff → 13.1.2-preview-c449b8da8
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 +0 -7
- package/dist/AssetsController.cjs +4 -44
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +2 -2
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +2 -2
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +4 -44
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/middlewares/DetectionMiddleware.cjs +25 -88
- package/dist/middlewares/DetectionMiddleware.cjs.map +1 -1
- package/dist/middlewares/DetectionMiddleware.d.cts +0 -16
- package/dist/middlewares/DetectionMiddleware.d.cts.map +1 -1
- package/dist/middlewares/DetectionMiddleware.d.mts +0 -16
- package/dist/middlewares/DetectionMiddleware.d.mts.map +1 -1
- package/dist/middlewares/DetectionMiddleware.mjs +23 -86
- package/dist/middlewares/DetectionMiddleware.mjs.map +1 -1
- package/dist/middlewares/index.cjs.map +1 -1
- package/dist/middlewares/index.d.cts +0 -1
- package/dist/middlewares/index.d.cts.map +1 -1
- package/dist/middlewares/index.d.mts +0 -1
- package/dist/middlewares/index.d.mts.map +1 -1
- package/dist/middlewares/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,15 +7,8 @@ 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
|
-
- Add `DetectionMiddlewareOptions` with an `isTokenDetectionEnabled` callback to `DetectionMiddleware`. `AssetsController` wires it from the `useTokenDetection` preference read via `PreferencesController:getState` (defaulting to enabled when `PreferencesController` is not registered), so when the user's token-autodetection preference is off, new-to-state fungible tokens (`erc20` and `token` namespaces, e.g. ERC-20 and SPL) are neither detected nor persisted from any pipeline, including websocket (account-activity) updates — their balances and stub metadata are stripped from the response. Native assets, staking-contract assets, custom (user-imported) assets, and holdings already tracked in state are unaffected ([#9835](https://github.com/MetaMask/core/pull/9835))
|
|
13
|
-
- `AssetsController` also subscribes to `PreferencesController:stateChange` and force-refreshes balances, metadata, and prices when the preference is turned back on, so tokens skipped while it was off are detected without waiting for the next poll
|
|
14
|
-
|
|
15
10
|
### Changed
|
|
16
11
|
|
|
17
|
-
- **BREAKING:** `AssetsControllerMessenger` now requires the `PreferencesController:getState` action to be allowed ([#9835](https://github.com/MetaMask/core/pull/9835))
|
|
18
|
-
- `AssetsController` calls it to read the user's `useTokenDetection` preference; clients must add the action to the allowed actions when constructing the restricted messenger
|
|
19
12
|
- Bump `@metamask/transaction-controller` from `^69.5.1` to `^69.5.2` ([#9823](https://github.com/MetaMask/core/pull/9823))
|
|
20
13
|
|
|
21
14
|
## [13.1.2]
|
|
@@ -13,7 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
13
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
15
|
};
|
|
16
|
-
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_captureException, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_accountRefreshMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_lastKnownAccountIds, _AssetsController_getSelectedAccounts, _AssetsController_accountActivityDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware,
|
|
16
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_captureException, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_accountRefreshMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_lastKnownAccountIds, _AssetsController_getSelectedAccounts, _AssetsController_accountActivityDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_customAssetGraduationMiddleware, _AssetsController_rpcFallbackMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_queryApiClient, _AssetsController_onActiveChainsUpdated, _AssetsController_initializeNativeAssetsMap, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_onUnapprovedTransactionAdded, _AssetsController_onTransactionConfirmed, _AssetsController_updateActive, _AssetsController_handleAccountTreeStateChange, _AssetsController_runAccountTreeRefresh, _AssetsController_runStartupRefresh, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_assertNonEmptyAccountId, _AssetsController_normalizeAssetIdOrThrow, _AssetsController_fetchMissingPricesWithoutCache, _AssetsController_getNativeAssetMap, _AssetsController_isNativeAsset, _AssetsController_getAssetType, _AssetsController_resolveNativeAssetIds, _AssetsController_getNativeAssetIdsForEnabledChains, _AssetsController_getNativeAssetIdsForAccount, _AssetsController_getSlowPipelineChainIds, _AssetsController_ensureNativeBalancesDefaultZero, _AssetsController_ensureDefaultTrackedAssetsSeeded, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_getAssetFromState, _AssetsController_shouldHideNativeToken, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_subscribeRpcCustomAssetsSupplement, _AssetsController_unsubscribeBySubscriptionKey, _AssetsController_subscribeStakedBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged, _AssetsController_handleNetworkAdded, _AssetsController_refreshActiveChainsOnNetworkSwitch, _AssetsController_getSelectedEvmChainIdFromNetworkState, _AssetsController_handleNetworkDidChange, _AssetsController_refreshAssetsAfterNetworkChange, _AssetsController_refreshAssetsAfterNetworkAdded;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.AssetsController = exports.getDefaultAssetsControllerState = void 0;
|
|
19
19
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -334,21 +334,6 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
334
334
|
_AssetsController_stakedBalanceDataSource.set(this, void 0);
|
|
335
335
|
_AssetsController_priceDataSource.set(this, void 0);
|
|
336
336
|
_AssetsController_detectionMiddleware.set(this, void 0);
|
|
337
|
-
/**
|
|
338
|
-
* "Autodetect tokens" preference; fails open (enabled) on clients that
|
|
339
|
-
* don't register PreferencesController (e.g. mobile).
|
|
340
|
-
*
|
|
341
|
-
* @returns Whether token autodetection is enabled.
|
|
342
|
-
*/
|
|
343
|
-
_AssetsController_tokenDetectionEnabled.set(this, () => {
|
|
344
|
-
try {
|
|
345
|
-
const preferencesState = this.messenger.call('PreferencesController:getState');
|
|
346
|
-
return preferencesState?.useTokenDetection ?? true;
|
|
347
|
-
}
|
|
348
|
-
catch {
|
|
349
|
-
return true;
|
|
350
|
-
}
|
|
351
|
-
});
|
|
352
337
|
_AssetsController_customAssetGraduationMiddleware.set(this, void 0);
|
|
353
338
|
_AssetsController_rpcFallbackMiddleware.set(this, void 0);
|
|
354
339
|
_AssetsController_tokenDataSource.set(this, void 0);
|
|
@@ -431,9 +416,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
431
416
|
getSelectedCurrency: () => this.state.selectedCurrency,
|
|
432
417
|
...priceDataSourceConfig,
|
|
433
418
|
}), "f");
|
|
434
|
-
__classPrivateFieldSet(this, _AssetsController_detectionMiddleware, new DetectionMiddleware_js_1.DetectionMiddleware(
|
|
435
|
-
isTokenDetectionEnabled: __classPrivateFieldGet(this, _AssetsController_tokenDetectionEnabled, "f"),
|
|
436
|
-
}), "f");
|
|
419
|
+
__classPrivateFieldSet(this, _AssetsController_detectionMiddleware, new DetectionMiddleware_js_1.DetectionMiddleware(), "f");
|
|
437
420
|
__classPrivateFieldSet(this, _AssetsController_customAssetGraduationMiddleware, new CustomAssetGraduationMiddleware_js_1.CustomAssetGraduationMiddleware({
|
|
438
421
|
getSelectedAccountId: () => {
|
|
439
422
|
try {
|
|
@@ -1106,11 +1089,8 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
1106
1089
|
// Websocket updates can carry brand-new spam airdrops: enrich them
|
|
1107
1090
|
// with Token API occurrences and drop below-floor tokens BEFORE
|
|
1108
1091
|
// detection, so spam is never detected, enriched, priced or persisted.
|
|
1109
|
-
// Skipped when token detection is off — DetectionMiddleware strips
|
|
1110
|
-
// every new token anyway, so the occurrence lookups would be wasted.
|
|
1111
1092
|
const shouldFilterOccurrences = sourceId === 'AccountActivityDataSource' &&
|
|
1112
|
-
__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)
|
|
1113
|
-
__classPrivateFieldGet(this, _AssetsController_tokenDetectionEnabled, "f").call(this);
|
|
1093
|
+
__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this);
|
|
1114
1094
|
const enrichmentSources = [
|
|
1115
1095
|
...(shouldGraduateCustomAssets
|
|
1116
1096
|
? [__classPrivateFieldGet(this, _AssetsController_customAssetGraduationMiddleware, "f")]
|
|
@@ -1200,7 +1180,7 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
1200
1180
|
}
|
|
1201
1181
|
}
|
|
1202
1182
|
exports.AssetsController = AssetsController;
|
|
1203
|
-
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_captureException = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_accountRefreshMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_lastKnownAccountIds = new WeakMap(), _AssetsController_accountActivityDataSource = new WeakMap(), _AssetsController_accountsApiDataSource = new WeakMap(), _AssetsController_snapDataSource = new WeakMap(), _AssetsController_rpcDataSource = new WeakMap(), _AssetsController_stakedBalanceDataSource = new WeakMap(), _AssetsController_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(),
|
|
1183
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_captureException = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_accountRefreshMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_lastKnownAccountIds = new WeakMap(), _AssetsController_accountActivityDataSource = new WeakMap(), _AssetsController_accountsApiDataSource = new WeakMap(), _AssetsController_snapDataSource = new WeakMap(), _AssetsController_rpcDataSource = new WeakMap(), _AssetsController_stakedBalanceDataSource = new WeakMap(), _AssetsController_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(), _AssetsController_customAssetGraduationMiddleware = new WeakMap(), _AssetsController_rpcFallbackMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_unsubscribeBasicFunctionality = new WeakMap(), _AssetsController_queryApiClient = new WeakMap(), _AssetsController_onActiveChainsUpdated = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_emitStateSizeTrace = function _AssetsController_emitStateSizeTrace() {
|
|
1204
1184
|
if (!__classPrivateFieldGet(this, _AssetsController_trace, "f") || __classPrivateFieldGet(this, _AssetsController_stateSizeReported, "f")) {
|
|
1205
1185
|
return;
|
|
1206
1186
|
}
|
|
@@ -1355,15 +1335,6 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1355
1335
|
__classPrivateFieldSet(this, _AssetsController_uiOpen, isUiOpen, "f");
|
|
1356
1336
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
1357
1337
|
}, client_controller_1.clientControllerSelectors.selectIsUiOpen);
|
|
1358
|
-
// "Autodetect tokens" preference. Turning it on re-runs the pipeline so
|
|
1359
|
-
// tokens skipped while it was off are detected without waiting for the
|
|
1360
|
-
// next poll. Turning it off needs no refresh: already-tracked assets stay
|
|
1361
|
-
// in state, and the next update strips new ones anyway.
|
|
1362
|
-
this.messenger.subscribe('PreferencesController:stateChange', (useTokenDetection) => {
|
|
1363
|
-
if (useTokenDetection) {
|
|
1364
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_refreshAssetsAfterTokenDetectionEnabled).call(this);
|
|
1365
|
-
}
|
|
1366
|
-
}, (state) => state.useTokenDetection);
|
|
1367
1338
|
this.messenger.subscribe('KeyringController:unlock', () => {
|
|
1368
1339
|
__classPrivateFieldSet(this, _AssetsController_keyringUnlocked, true, "f");
|
|
1369
1340
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
@@ -2523,17 +2494,6 @@ async function _AssetsController_handleNetworkDidChange(networkState) {
|
|
|
2523
2494
|
}).catch((error) => {
|
|
2524
2495
|
log('Failed to refresh assets after network change', { error });
|
|
2525
2496
|
});
|
|
2526
|
-
}, _AssetsController_refreshAssetsAfterTokenDetectionEnabled = function _AssetsController_refreshAssetsAfterTokenDetectionEnabled() {
|
|
2527
|
-
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
2528
|
-
if (accounts.length === 0) {
|
|
2529
|
-
return;
|
|
2530
|
-
}
|
|
2531
|
-
this.getAssets(accounts, {
|
|
2532
|
-
forceUpdate: true,
|
|
2533
|
-
dataTypes: ['balance', 'metadata', 'price'],
|
|
2534
|
-
}).catch((error) => {
|
|
2535
|
-
log('Failed to refresh assets after token detection enabled', { error });
|
|
2536
|
-
});
|
|
2537
2497
|
}, _AssetsController_refreshAssetsAfterNetworkAdded =
|
|
2538
2498
|
/**
|
|
2539
2499
|
* Refresh balances and fetch missing prices after a network is added.
|