@metamask/assets-controller 10.0.0 → 10.1.0
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 +29 -1
- package/dist/AssetsController.cjs +23 -5
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +7 -1
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +7 -1
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +23 -5
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/migrations/healAssetsInfoMetadata.cjs +385 -0
- package/dist/migrations/healAssetsInfoMetadata.cjs.map +1 -0
- package/dist/migrations/healAssetsInfoMetadata.d.cts +106 -0
- package/dist/migrations/healAssetsInfoMetadata.d.cts.map +1 -0
- package/dist/migrations/healAssetsInfoMetadata.d.mts +106 -0
- package/dist/migrations/healAssetsInfoMetadata.d.mts.map +1 -0
- package/dist/migrations/healAssetsInfoMetadata.mjs +381 -0
- package/dist/migrations/healAssetsInfoMetadata.mjs.map +1 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +3 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +3 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [10.1.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add temporary `tempMigrateAssetsInfoMetadataAssets3346` constructor option that heals `assetsInfo` metadata (and custom-asset tracking) wiped by a prior defect for tokens on niche EVM chains, using legacy `TokensController` state provided by the host ([#9393](https://github.com/MetaMask/core/pull/9393))
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Bump `@metamask/messenger` from `^1.2.0` to `^2.0.0` ([#9392](https://github.com/MetaMask/core/pull/9392))
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Fetch balances when switching account groups, enabling RPC-only networks, or after a new account is added to the account tree ([#9388](https://github.com/MetaMask/core/pull/9388))
|
|
23
|
+
|
|
24
|
+
## [10.0.1]
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- Bump `@metamask/transaction-controller` from `^68.2.0` to `^68.2.2` ([#9337](https://github.com/MetaMask/core/pull/9337), [#9349](https://github.com/MetaMask/core/pull/9349))
|
|
29
|
+
- Bump `@metamask/accounts-controller` from `^39.0.3` to `^39.0.4` ([#9349](https://github.com/MetaMask/core/pull/9349))
|
|
30
|
+
- Bump `@metamask/assets-controllers` from `^109.2.2` to `^109.3.0` ([#9349](https://github.com/MetaMask/core/pull/9349))
|
|
31
|
+
- Bump `@metamask/core-backend` from `^6.4.0` to `^6.5.0` ([#9349](https://github.com/MetaMask/core/pull/9349))
|
|
32
|
+
- Bump `@metamask/network-controller` from `^33.0.0` to `^34.0.0` ([#9349](https://github.com/MetaMask/core/pull/9349))
|
|
33
|
+
- Bump `@metamask/network-enablement-controller` from `^5.4.0` to `^5.4.1` ([#9349](https://github.com/MetaMask/core/pull/9349))
|
|
34
|
+
- Bump `@metamask/polling-controller` from `^16.0.7` to `^16.0.8` ([#9349](https://github.com/MetaMask/core/pull/9349))
|
|
35
|
+
|
|
10
36
|
## [10.0.0]
|
|
11
37
|
|
|
12
38
|
### Changed
|
|
@@ -671,7 +697,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
671
697
|
- Refactor `RpcDataSource` to delegate polling to `BalanceFetcher` and `TokenDetector` services ([#7709](https://github.com/MetaMask/core/pull/7709))
|
|
672
698
|
- Refactor `BalanceFetcher` and `TokenDetector` to extend `StaticIntervalPollingControllerOnly` for independent polling management ([#7709](https://github.com/MetaMask/core/pull/7709))
|
|
673
699
|
|
|
674
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@10.
|
|
700
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@10.1.0...HEAD
|
|
701
|
+
[10.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@10.0.1...@metamask/assets-controller@10.1.0
|
|
702
|
+
[10.0.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@10.0.0...@metamask/assets-controller@10.0.1
|
|
675
703
|
[10.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@9.1.0...@metamask/assets-controller@10.0.0
|
|
676
704
|
[9.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@9.0.2...@metamask/assets-controller@9.1.0
|
|
677
705
|
[9.0.2]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@9.0.1...@metamask/assets-controller@9.0.2
|
|
@@ -37,6 +37,7 @@ const CustomAssetGraduationMiddleware_1 = require("./middlewares/CustomAssetGrad
|
|
|
37
37
|
const DetectionMiddleware_1 = require("./middlewares/DetectionMiddleware.cjs");
|
|
38
38
|
const ParallelMiddleware_1 = require("./middlewares/ParallelMiddleware.cjs");
|
|
39
39
|
const RpcFallbackMiddleware_1 = require("./middlewares/RpcFallbackMiddleware.cjs");
|
|
40
|
+
const healAssetsInfoMetadata_1 = require("./migrations/healAssetsInfoMetadata.cjs");
|
|
40
41
|
const utils_2 = require("./utils/index.cjs");
|
|
41
42
|
const constants_1 = require("./utils/constants.cjs");
|
|
42
43
|
const customAssetsRpcSupplement_1 = require("./utils/customAssetsRpcSupplement.cjs");
|
|
@@ -259,7 +260,7 @@ function mergeAccountBalances(previousBalances, accountBalances, customAssetIds,
|
|
|
259
260
|
* - The controller does NOT manage polling - it simply receives pushed updates
|
|
260
261
|
*/
|
|
261
262
|
class AssetsController extends base_controller_1.BaseController {
|
|
262
|
-
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, captureException, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }) {
|
|
263
|
+
constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, captureException, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, tempMigrateAssetsInfoMetadataAssets3346, }) {
|
|
263
264
|
super({
|
|
264
265
|
name: CONTROLLER_NAME,
|
|
265
266
|
messenger,
|
|
@@ -326,6 +327,15 @@ class AssetsController extends base_controller_1.BaseController {
|
|
|
326
327
|
__classPrivateFieldSet(this, _AssetsController_captureException, captureException, "f");
|
|
327
328
|
__classPrivateFieldSet(this, _AssetsController_queryApiClient, queryApiClient, "f");
|
|
328
329
|
const rpcConfig = rpcDataSourceConfig ?? {};
|
|
330
|
+
// TEMPORARY: heal assetsInfo metadata wiped by a prior defect
|
|
331
|
+
// (see extension migration #215 / ASSETS-3346). Remove in a future release.
|
|
332
|
+
if (tempMigrateAssetsInfoMetadataAssets3346) {
|
|
333
|
+
this.update(() => (0, healAssetsInfoMetadata_1.tempHealAssetsInfoMetadata)({
|
|
334
|
+
state: this.state,
|
|
335
|
+
getMigrationState: tempMigrateAssetsInfoMetadataAssets3346,
|
|
336
|
+
captureException,
|
|
337
|
+
}));
|
|
338
|
+
}
|
|
329
339
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_initializeNativeAssetsMap).call(this, queryApiClient);
|
|
330
340
|
__classPrivateFieldSet(this, _AssetsController_onActiveChainsUpdated, (dataSourceName, chains, previousChains) => {
|
|
331
341
|
try {
|
|
@@ -1237,17 +1247,18 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1237
1247
|
previousCount: __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size,
|
|
1238
1248
|
currentCount: currentIds.size,
|
|
1239
1249
|
});
|
|
1250
|
+
const newAccounts = accounts.filter((account) => !__classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").has(account.id));
|
|
1240
1251
|
__classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, currentIds, "f");
|
|
1241
1252
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureNativeBalancesDefaultZero).call(this);
|
|
1242
1253
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureDefaultTrackedAssetsSeeded).call(this);
|
|
1243
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_runAccountTreeRefresh).call(this, accounts).catch((error) => {
|
|
1254
|
+
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_runAccountTreeRefresh).call(this, accounts, newAccounts).catch((error) => {
|
|
1244
1255
|
log('Failed to refresh assets after tree change', error);
|
|
1245
1256
|
});
|
|
1246
1257
|
}
|
|
1247
1258
|
else {
|
|
1248
1259
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_start).call(this);
|
|
1249
1260
|
}
|
|
1250
|
-
}, _AssetsController_runAccountTreeRefresh = async function _AssetsController_runAccountTreeRefresh(accounts) {
|
|
1261
|
+
}, _AssetsController_runAccountTreeRefresh = async function _AssetsController_runAccountTreeRefresh(accounts, newAccounts = []) {
|
|
1251
1262
|
const releaseLock = await __classPrivateFieldGet(this, _AssetsController_accountRefreshMutex, "f").acquire();
|
|
1252
1263
|
try {
|
|
1253
1264
|
await this.getAssets(accounts, {
|
|
@@ -1255,6 +1266,12 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
1255
1266
|
forceUpdate: true,
|
|
1256
1267
|
});
|
|
1257
1268
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
1269
|
+
if (newAccounts.length > 0) {
|
|
1270
|
+
await this.getAssets(newAccounts, {
|
|
1271
|
+
chainIds: [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")],
|
|
1272
|
+
forceUpdate: true,
|
|
1273
|
+
});
|
|
1274
|
+
}
|
|
1258
1275
|
}
|
|
1259
1276
|
catch (error) {
|
|
1260
1277
|
log('Failed to fetch assets after tree change', error);
|
|
@@ -2141,8 +2158,9 @@ async function _AssetsController_handleAccountGroupChanged() {
|
|
|
2141
2158
|
// Refresh subscriptions for new chain set
|
|
2142
2159
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
|
|
2143
2160
|
// Do one-time fetch for newly enabled chains; merge so we keep existing chain balances
|
|
2144
|
-
|
|
2145
|
-
|
|
2161
|
+
const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
|
|
2162
|
+
if (addedChains.length > 0 && accounts.length > 0) {
|
|
2163
|
+
await this.getAssets(accounts, {
|
|
2146
2164
|
chainIds: addedChains,
|
|
2147
2165
|
forceUpdate: true,
|
|
2148
2166
|
updateMode: 'merge',
|