@metamask-previews/assets-controller 16.0.0-preview-b168a5fd4 → 16.1.0-preview-6616ef8e1
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 +17 -3
- package/dist/AssetsController.d.ts.map +1 -1
- package/dist/AssetsController.js +27 -118
- package/dist/AssetsController.js.map +1 -1
- package/dist/data-sources/AccountActivityDataSource.d.ts.map +1 -1
- package/dist/data-sources/AccountActivityDataSource.js +1 -0
- package/dist/data-sources/AccountActivityDataSource.js.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.ts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.js +6 -2
- package/dist/data-sources/AccountsApiDataSource.js.map +1 -1
- package/dist/data-sources/TokenDataSource.d.ts.map +1 -1
- package/dist/data-sources/TokenDataSource.js +29 -36
- package/dist/data-sources/TokenDataSource.js.map +1 -1
- package/dist/pipeline/buildFastFetchSources.d.ts +42 -0
- package/dist/pipeline/buildFastFetchSources.d.ts.map +1 -0
- package/dist/pipeline/buildFastFetchSources.js +38 -0
- package/dist/pipeline/buildFastFetchSources.js.map +1 -0
- package/dist/pipeline/executeAssetsPipeline.d.ts +33 -0
- package/dist/pipeline/executeAssetsPipeline.d.ts.map +1 -0
- package/dist/pipeline/executeAssetsPipeline.js +112 -0
- package/dist/pipeline/executeAssetsPipeline.js.map +1 -0
- package/dist/pipeline/index.d.ts +5 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +3 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/native-assets.d.ts +37 -2
- package/dist/utils/native-assets.d.ts.map +1 -1
- package/dist/utils/native-assets.js +137 -4
- package/dist/utils/native-assets.js.map +1 -1
- package/dist/utils/snaps-assets-migration.d.ts.map +1 -1
- package/dist/utils/snaps-assets-migration.js.map +1 -1
- package/package.json +6 -5
package/CHANGELOG.md
CHANGED
|
@@ -7,14 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- `TokenDataSource` spam filtering now removes filtered assets from `assetsBalance` and `detectedAssets` using case-insensitive asset ID matching (previously only `assetsInfo` was matched case-insensitively), so spam tokens whose IDs arrive in a different case than state no longer survive in the pipeline response and persist to state ([#10172](https://github.com/MetaMask/core/pull/10172))
|
|
13
|
+
|
|
14
|
+
## [16.1.0]
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Add optional `metadata` on fungible `assetsBalance` entries from the Accounts API and Account Activity websocket ([#10194](https://github.com/MetaMask/core/pull/10194))
|
|
19
|
+
- Register the Solana, Stellar and Tron native assets (SOL, XLM, TRX) so accounts holding no assets on those networks now surface a zero-balance native entry, matching the existing EVM behavior ([#10194](https://github.com/MetaMask/core/pull/10194))
|
|
20
|
+
|
|
10
21
|
### Changed
|
|
11
22
|
|
|
12
23
|
- Bump `@metamask/account-tree-controller` from `^10.0.0` to `^10.0.1` ([#10166](https://github.com/MetaMask/core/pull/10166))
|
|
13
|
-
- Bump `@metamask/assets-controllers` from `^112.0.0` to `^112.0.
|
|
14
|
-
- Bump `@metamask/core-backend` from `^10.0.0` to `^
|
|
24
|
+
- Bump `@metamask/assets-controllers` from `^112.0.0` to `^112.0.2` ([#10166](https://github.com/MetaMask/core/pull/10166), [#10242](https://github.com/MetaMask/core/pull/10242))
|
|
25
|
+
- Bump `@metamask/core-backend` from `^10.0.0` to `^11.0.0` ([#10166](https://github.com/MetaMask/core/pull/10166), [#10242](https://github.com/MetaMask/core/pull/10242))
|
|
15
26
|
- `AccountsApiDataSource` now treats Accounts API `/v2/supportedNetworks` `partialSupport` as active chains in addition to `fullSupport`, still gated by the Snaps assets migration feature flags ([#10144](https://github.com/MetaMask/core/pull/10144))
|
|
16
27
|
- `AccountsApiDataSource` now reads Accounts API `/v2/supportedNetworks` as CAIP-2 `fullSupport` and `partialSupport` string arrays, matching the current API payload
|
|
17
28
|
- Bump `@metamask/utils` from `^11.12.0` to `^12.0.0` ([#10192](https://github.com/MetaMask/core/pull/10192))
|
|
29
|
+
- Bump `@metamask/phishing-controller` from `^18.0.0` to `^18.1.0` ([#10234](https://github.com/MetaMask/core/pull/10234))
|
|
30
|
+
- Bump `@metamask/transaction-controller` from `^70.0.0` to `^70.0.1` ([#10242](https://github.com/MetaMask/core/pull/10242))
|
|
18
31
|
|
|
19
32
|
## [16.0.0]
|
|
20
33
|
|
|
@@ -1047,7 +1060,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1047
1060
|
- Refactor `RpcDataSource` to delegate polling to `BalanceFetcher` and `TokenDetector` services ([#7709](https://github.com/MetaMask/core/pull/7709))
|
|
1048
1061
|
- Refactor `BalanceFetcher` and `TokenDetector` to extend `StaticIntervalPollingControllerOnly` for independent polling management ([#7709](https://github.com/MetaMask/core/pull/7709))
|
|
1049
1062
|
|
|
1050
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@16.
|
|
1063
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@16.1.0...HEAD
|
|
1064
|
+
[16.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@16.0.0...@metamask/assets-controller@16.1.0
|
|
1051
1065
|
[16.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@15.1.0...@metamask/assets-controller@16.0.0
|
|
1052
1066
|
[15.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@15.0.0...@metamask/assets-controller@15.1.0
|
|
1053
1067
|
[15.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@14.0.3...@metamask/assets-controller@15.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.ts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,qCAAqC,EACrC,wCAAwC,EACxC,oDAAoD,EACpD,uCAAuC,EACxC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,8BAA8B,EAC9B,gCAAgC,EACjC,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,4DAA4D,EAAE,MAAM,sCAAsC,CAAC;AACzH,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EACV,iBAAiB,EACjB,yCAAyC,EACzC,wCAAwC,EACxC,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,iCAAiC,EACjC,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EACV,2CAA2C,EAC3C,+BAA+B,EAC/B,kCAAkC,EAClC,sCAAsC,EACtC,oCAAoC,EAEpC,iCAAiC,EAClC,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,yCAAyC,EACzC,iCAAiC,EAElC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EACd,+BAA+B,EAChC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,sCAAsC,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,KAAK,EACV,yCAAyC,EACzC,2CAA2C,EAC5C,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EACV,oCAAoC,EACpC,iCAAiC,EACjC,gCAAgC,EACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,8CAA8C,EAC9C,oDAAoD,EAErD,MAAM,kCAAkC,CAAC;AAa1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAO/F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAI3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAK/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,KAAK,EAAE,6CAA6C,EAAE,MAAM,kCAAkC,CAAC;AAEtG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"AssetsController.d.ts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
|
package/dist/AssetsController.js
CHANGED
|
@@ -14,16 +14,16 @@ import { SnapDataSource } from './data-sources/SnapDataSource.js';
|
|
|
14
14
|
import { StakedBalanceDataSource } from './data-sources/StakedBalanceDataSource.js';
|
|
15
15
|
import { CaipAssetNamespace, TokenDataSource, } from './data-sources/TokenDataSource.js';
|
|
16
16
|
import { CHAINS_WITH_DEFAULT_TRACKED_ASSETS, DEFAULT_TRACKED_ASSETS_BY_CHAIN, buildDefaultAssetsInfo, getDefaultAssetMetadata, } from './defaults.js';
|
|
17
|
-
import { AssetsDataSourceError } from './errors.js';
|
|
18
17
|
import { projectLogger, createModuleLogger } from './logger.js';
|
|
19
18
|
import { CustomAssetGraduationMiddleware } from './middlewares/CustomAssetGraduationMiddleware.js';
|
|
20
19
|
import { DetectionMiddleware } from './middlewares/DetectionMiddleware.js';
|
|
21
20
|
import { createParallelBalanceMiddleware, createParallelMiddleware, } from './middlewares/ParallelMiddleware.js';
|
|
22
21
|
import { RpcFallbackMiddleware } from './middlewares/RpcFallbackMiddleware.js';
|
|
23
22
|
import { cleanSpamAssets, isUnlockCleanupEnabled, tempHealAssetsInfoMetadata, } from './migrations/healAssetsInfoMetadata.js';
|
|
23
|
+
import { buildFastFetchSources, executeAssetsPipeline, } from './pipeline/index.js';
|
|
24
24
|
import { ZERO_ADDRESS } from './utils/constants.js';
|
|
25
25
|
import { pickRpcCustomAssetsSupplement } from './utils/customAssetsRpcSupplement.js';
|
|
26
|
-
import { normalizeAmountString, normalizeAssetId, formatExchangeRatesForBridge, formatStateForTransactionPay, buildNativeAssetsFromConstant, buildNativeAssetsFromApi, } from './utils/index.js';
|
|
26
|
+
import { normalizeAmountString, normalizeAssetId, formatExchangeRatesForBridge, formatStateForTransactionPay, buildNativeAssetsFromConstant, buildNativeAssetsFromApi, getDefaultNativeAssetBalance, } from './utils/index.js';
|
|
27
27
|
import { emitTrace, withTrace } from './utils/trace.js';
|
|
28
28
|
const NATIVE_ASSETS_QUERY_KEY = ['nativeAssets'];
|
|
29
29
|
/** Stable empty map so memoized formatters are not busted by `?? {}` identity churn. */
|
|
@@ -60,8 +60,6 @@ const TRACE_FULL_FETCH = 'AssetsFullFetch';
|
|
|
60
60
|
/** Parent span that nests per-source timings; dashboard charts {@link TRACE_FULL_FETCH}. */
|
|
61
61
|
const TRACE_FETCH_PIPELINE = 'AssetsFetchPipeline';
|
|
62
62
|
const TRACE_BACKGROUND_FETCH = 'AssetsBackgroundFetch';
|
|
63
|
-
const TRACE_DATA_SOURCE_TIMING = 'AssetsDataSourceTiming';
|
|
64
|
-
const TRACE_DATA_SOURCE_ERROR = 'AssetsDataSourceError';
|
|
65
63
|
const TRACE_UPDATE_PIPELINE = 'AssetsUpdatePipeline';
|
|
66
64
|
/** Parent span that nests update enrichment; dashboard charts {@link TRACE_UPDATE_PIPELINE}. */
|
|
67
65
|
const TRACE_UPDATE_PARENT = 'AssetsUpdateEnrichment';
|
|
@@ -842,6 +840,9 @@ export class AssetsController extends BaseController {
|
|
|
842
840
|
* Execute middlewares with request/response context.
|
|
843
841
|
* Returns response and exclusive duration per source (sum ≈ wall time).
|
|
844
842
|
*
|
|
843
|
+
* Thin wrapper over {@link executeAssetsPipeline} that supplies the
|
|
844
|
+
* controller-owned state accessor and exception reporter.
|
|
845
|
+
*
|
|
845
846
|
* @param params - Middleware execution options.
|
|
846
847
|
* @param params.sources - Data sources or middlewares with getName() and assetsMiddleware.
|
|
847
848
|
* @param params.request - The data request.
|
|
@@ -851,101 +852,11 @@ export class AssetsController extends BaseController {
|
|
|
851
852
|
* @returns Response and durationByDataSource (exclusive ms per source name).
|
|
852
853
|
*/
|
|
853
854
|
async #executeMiddlewares(params) {
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
const middlewares = sources.map((source) => source.assetsMiddleware);
|
|
857
|
-
const inclusive = [];
|
|
858
|
-
const wrapped = middlewares.map((middleware, i) => (async (ctx, next) => {
|
|
859
|
-
const start = performance.now();
|
|
860
|
-
try {
|
|
861
|
-
return await middleware(ctx, next);
|
|
862
|
-
}
|
|
863
|
-
finally {
|
|
864
|
-
inclusive[i] = performance.now() - start;
|
|
865
|
-
}
|
|
866
|
-
}));
|
|
867
|
-
const middlewareErrors = [];
|
|
868
|
-
const chain = wrapped.reduceRight((next, middleware, index) => async (ctx) => {
|
|
869
|
-
try {
|
|
870
|
-
return await middleware(ctx, next);
|
|
871
|
-
}
|
|
872
|
-
catch (error) {
|
|
873
|
-
const sourceName = names[index] ?? `middleware_${index}`;
|
|
874
|
-
middlewareErrors.push(sourceName);
|
|
875
|
-
console.error('[AssetsController] Middleware failed:', error);
|
|
876
|
-
return next(ctx);
|
|
877
|
-
}
|
|
878
|
-
}, async (ctx) => ctx);
|
|
879
|
-
const result = await chain({
|
|
880
|
-
request,
|
|
881
|
-
response: initialResponse,
|
|
855
|
+
return executeAssetsPipeline({
|
|
856
|
+
...params,
|
|
882
857
|
getAssetsState: () => this.state,
|
|
858
|
+
captureException: this.#captureException,
|
|
883
859
|
});
|
|
884
|
-
const durationByDataSource = {};
|
|
885
|
-
for (let i = 0; i < inclusive.length; i++) {
|
|
886
|
-
const nextInc = i + 1 < inclusive.length ? (inclusive[i + 1] ?? 0) : 0;
|
|
887
|
-
const exclusive = Math.max(0, (inclusive[i] ?? 0) - nextInc);
|
|
888
|
-
const name = names[i];
|
|
889
|
-
if (name !== undefined) {
|
|
890
|
-
durationByDataSource[name] = exclusive;
|
|
891
|
-
}
|
|
892
|
-
}
|
|
893
|
-
if (result.durationByDataSource) {
|
|
894
|
-
for (const [key, ms] of Object.entries(result.durationByDataSource)) {
|
|
895
|
-
durationByDataSource[key] = ms;
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
// Emit per-source timing as subspans under the parent fetch/update span
|
|
899
|
-
// (no-op when `trace` is omitted — unlock/first-init only).
|
|
900
|
-
for (const [sourceName, durationMs] of Object.entries(durationByDataSource)) {
|
|
901
|
-
emitTrace({
|
|
902
|
-
name: TRACE_DATA_SOURCE_TIMING,
|
|
903
|
-
trace,
|
|
904
|
-
data: {
|
|
905
|
-
source: sourceName,
|
|
906
|
-
duration_ms: durationMs,
|
|
907
|
-
chain_count: request.chainIds.length,
|
|
908
|
-
account_count: request.accountsWithSupportedChains.length,
|
|
909
|
-
},
|
|
910
|
-
tags: {
|
|
911
|
-
controller: 'AssetsController',
|
|
912
|
-
// String tag so Spans widgets can group by `source`.
|
|
913
|
-
source: sourceName,
|
|
914
|
-
},
|
|
915
|
-
parentContext,
|
|
916
|
-
});
|
|
917
|
-
}
|
|
918
|
-
// Failed middlewares: Issues (optional) + perf/Dashboard spans
|
|
919
|
-
if (middlewareErrors.length > 0) {
|
|
920
|
-
const failedSources = middlewareErrors.join(',');
|
|
921
|
-
const assetsError = new AssetsDataSourceError({
|
|
922
|
-
failedSources,
|
|
923
|
-
errorCount: middlewareErrors.length,
|
|
924
|
-
chainCount: request.chainIds.length,
|
|
925
|
-
});
|
|
926
|
-
try {
|
|
927
|
-
this.#captureException?.(assetsError);
|
|
928
|
-
}
|
|
929
|
-
catch {
|
|
930
|
-
// Never let telemetry throw.
|
|
931
|
-
}
|
|
932
|
-
emitTrace({
|
|
933
|
-
name: TRACE_DATA_SOURCE_ERROR,
|
|
934
|
-
trace,
|
|
935
|
-
data: {
|
|
936
|
-
failed_sources: failedSources,
|
|
937
|
-
error_count: middlewareErrors.length,
|
|
938
|
-
chain_count: request.chainIds.length,
|
|
939
|
-
},
|
|
940
|
-
tags: {
|
|
941
|
-
controller: 'AssetsController',
|
|
942
|
-
severity: 'error',
|
|
943
|
-
error_type: assetsError.name,
|
|
944
|
-
},
|
|
945
|
-
parentContext,
|
|
946
|
-
});
|
|
947
|
-
}
|
|
948
|
-
return { response: result.response, durationByDataSource };
|
|
949
860
|
}
|
|
950
861
|
// ============================================================================
|
|
951
862
|
// PUBLIC API: QUERY METHODS
|
|
@@ -985,24 +896,15 @@ export class AssetsController extends BaseController {
|
|
|
985
896
|
// Fast/slow pipelines use merge so partial API snapshots cannot wipe
|
|
986
897
|
// tokens missing from the response (e.g. USDC when only native balance
|
|
987
898
|
// is returned). Balances present in the response are still refreshed.
|
|
988
|
-
const fastSources =
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
this.#customAssetGraduationMiddleware,
|
|
998
|
-
this.#rpcFallbackMiddleware,
|
|
999
|
-
this.#detectionMiddleware,
|
|
1000
|
-
createParallelMiddleware([
|
|
1001
|
-
this.#tokenDataSource,
|
|
1002
|
-
this.#priceDataSource,
|
|
1003
|
-
]),
|
|
1004
|
-
]
|
|
1005
|
-
: [this.#stakedBalanceDataSource, this.#detectionMiddleware];
|
|
899
|
+
const fastSources = buildFastFetchSources({
|
|
900
|
+
accountsApiDataSource: this.#accountsApiDataSource,
|
|
901
|
+
stakedBalanceDataSource: this.#stakedBalanceDataSource,
|
|
902
|
+
customAssetGraduationMiddleware: this.#customAssetGraduationMiddleware,
|
|
903
|
+
rpcFallbackMiddleware: this.#rpcFallbackMiddleware,
|
|
904
|
+
detectionMiddleware: this.#detectionMiddleware,
|
|
905
|
+
tokenDataSource: this.#tokenDataSource,
|
|
906
|
+
priceDataSource: this.#priceDataSource,
|
|
907
|
+
}, { isBasicFunctionality: this.#isBasicFunctionality() });
|
|
1006
908
|
const { response } = await withTrace({
|
|
1007
909
|
name: TRACE_FETCH_PIPELINE,
|
|
1008
910
|
trace: pipelineTrace,
|
|
@@ -1720,7 +1622,8 @@ export class AssetsController extends BaseController {
|
|
|
1720
1622
|
}
|
|
1721
1623
|
for (const nativeAssetId of nativeAssetIds) {
|
|
1722
1624
|
if (!Object.prototype.hasOwnProperty.call(balances[accountId], nativeAssetId)) {
|
|
1723
|
-
balances[accountId][nativeAssetId] =
|
|
1625
|
+
balances[accountId][nativeAssetId] =
|
|
1626
|
+
getDefaultNativeAssetBalance(nativeAssetId);
|
|
1724
1627
|
}
|
|
1725
1628
|
}
|
|
1726
1629
|
}
|
|
@@ -1864,7 +1767,8 @@ export class AssetsController extends BaseController {
|
|
|
1864
1767
|
: this.#getNativeAssetIdsForEnabledChains();
|
|
1865
1768
|
for (const nativeAssetId of nativeAssetIdsForAccount) {
|
|
1866
1769
|
if (!Object.prototype.hasOwnProperty.call(effective, nativeAssetId)) {
|
|
1867
|
-
effective[nativeAssetId] =
|
|
1770
|
+
effective[nativeAssetId] =
|
|
1771
|
+
getDefaultNativeAssetBalance(nativeAssetId);
|
|
1868
1772
|
}
|
|
1869
1773
|
}
|
|
1870
1774
|
for (const [assetId, balance] of Object.entries(effective)) {
|
|
@@ -1878,7 +1782,12 @@ export class AssetsController extends BaseController {
|
|
|
1878
1782
|
// their metadata aren't lossily truncated.
|
|
1879
1783
|
const assetDecimals = metadata[assetId]?.decimals;
|
|
1880
1784
|
const newAmount = normalizeAmountString(balance.amount, assetDecimals);
|
|
1881
|
-
|
|
1785
|
+
const newMetadata = balance.metadata ??
|
|
1786
|
+
previousBalance?.metadata;
|
|
1787
|
+
effective[assetId] = {
|
|
1788
|
+
amount: newAmount,
|
|
1789
|
+
...(newMetadata === undefined ? {} : { metadata: newMetadata }),
|
|
1790
|
+
};
|
|
1882
1791
|
const oldAmount = previousBalance?.amount;
|
|
1883
1792
|
const isNewDefaultNativeZero = oldAmount === undefined &&
|
|
1884
1793
|
newAmount === '0' &&
|