@metamask-previews/assets-controller 2.0.2-preview-567bc78af → 2.0.2-preview-3d4d0d0ef
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-method-action-types.cjs.map +1 -1
- package/dist/AssetsController-method-action-types.d.cts +0 -5
- package/dist/AssetsController-method-action-types.d.cts.map +1 -1
- package/dist/AssetsController-method-action-types.d.mts +0 -5
- package/dist/AssetsController-method-action-types.d.mts.map +1 -1
- package/dist/AssetsController-method-action-types.mjs.map +1 -1
- package/dist/AssetsController.cjs +29 -148
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +5 -37
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +5 -37
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +29 -148
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs +0 -1
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs +0 -1
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.cjs +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.mjs +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
- package/dist/data-sources/PriceDataSource.cjs +14 -20
- package/dist/data-sources/PriceDataSource.cjs.map +1 -1
- package/dist/data-sources/PriceDataSource.d.cts +2 -2
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
- package/dist/data-sources/PriceDataSource.d.mts +2 -2
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
- package/dist/data-sources/PriceDataSource.mjs +14 -20
- package/dist/data-sources/PriceDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +0 -2
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +0 -2
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/SnapDataSource.cjs +2 -3
- package/dist/data-sources/SnapDataSource.cjs.map +1 -1
- package/dist/data-sources/SnapDataSource.d.cts.map +1 -1
- package/dist/data-sources/SnapDataSource.d.mts.map +1 -1
- package/dist/data-sources/SnapDataSource.mjs +2 -3
- package/dist/data-sources/SnapDataSource.mjs.map +1 -1
- package/dist/data-sources/TokenDataSource.cjs +0 -1
- 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 +0 -1
- package/dist/data-sources/TokenDataSource.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/middlewares/DetectionMiddleware.cjs +27 -44
- package/dist/middlewares/DetectionMiddleware.cjs.map +1 -1
- package/dist/middlewares/DetectionMiddleware.d.cts +9 -15
- package/dist/middlewares/DetectionMiddleware.d.cts.map +1 -1
- package/dist/middlewares/DetectionMiddleware.d.mts +9 -15
- package/dist/middlewares/DetectionMiddleware.d.mts.map +1 -1
- package/dist/middlewares/DetectionMiddleware.mjs +27 -44
- package/dist/middlewares/DetectionMiddleware.mjs.map +1 -1
- package/dist/middlewares/index.cjs +1 -5
- package/dist/middlewares/index.cjs.map +1 -1
- package/dist/middlewares/index.d.cts +0 -2
- package/dist/middlewares/index.d.cts.map +1 -1
- package/dist/middlewares/index.d.mts +0 -2
- package/dist/middlewares/index.d.mts.map +1 -1
- package/dist/middlewares/index.mjs +0 -1
- package/dist/middlewares/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +0 -16
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +0 -16
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +5 -6
- package/dist/middlewares/ParallelMiddleware.cjs +0 -216
- package/dist/middlewares/ParallelMiddleware.cjs.map +0 -1
- package/dist/middlewares/ParallelMiddleware.d.cts +0 -45
- package/dist/middlewares/ParallelMiddleware.d.cts.map +0 -1
- package/dist/middlewares/ParallelMiddleware.d.mts +0 -45
- package/dist/middlewares/ParallelMiddleware.d.mts.map +0 -1
- package/dist/middlewares/ParallelMiddleware.mjs +0 -214
- package/dist/middlewares/ParallelMiddleware.mjs.map +0 -1
|
@@ -2,8 +2,7 @@ import type { AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, Ac
|
|
|
2
2
|
import type { GetTokenListState } from "@metamask/assets-controllers";
|
|
3
3
|
import { BaseController } from "@metamask/base-controller";
|
|
4
4
|
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
5
|
-
import type {
|
|
6
|
-
import type { ApiPlatformClient, BackendWebSocketServiceActions, BackendWebSocketServiceEvents, SupportedCurrency } from "@metamask/core-backend";
|
|
5
|
+
import type { ApiPlatformClient, BackendWebSocketServiceActions, BackendWebSocketServiceEvents } from "@metamask/core-backend";
|
|
7
6
|
import type { KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
8
7
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
9
8
|
import type { Messenger } from "@metamask/messenger";
|
|
@@ -20,21 +19,6 @@ import type { RpcDataSourceConfig } from "./data-sources/RpcDataSource.cjs";
|
|
|
20
19
|
import type { AccountsControllerAccountBalancesUpdatedEvent } from "./data-sources/SnapDataSource.cjs";
|
|
21
20
|
import type { StakedBalanceDataSourceConfig } from "./data-sources/StakedBalanceDataSource.cjs";
|
|
22
21
|
import type { AccountId, AssetPreferences, ChainId, Caip19AssetId, AssetMetadata, AssetPrice, AssetBalance, AssetType, DataType, DataRequest, DataResponse, Asset } from "./types.cjs";
|
|
23
|
-
/**
|
|
24
|
-
* Metadata format passed from the UI when adding a custom token.
|
|
25
|
-
* Mirrors the "pendingTokens" shape used by the extension.
|
|
26
|
-
*/
|
|
27
|
-
export type PendingTokenMetadata = {
|
|
28
|
-
address: string;
|
|
29
|
-
symbol: string;
|
|
30
|
-
name: string;
|
|
31
|
-
decimals: number;
|
|
32
|
-
iconUrl?: string;
|
|
33
|
-
aggregators?: string[];
|
|
34
|
-
occurrences?: number;
|
|
35
|
-
chainId: string;
|
|
36
|
-
unlisted?: boolean;
|
|
37
|
-
};
|
|
38
22
|
declare const CONTROLLER_NAME: "AssetsController";
|
|
39
23
|
/**
|
|
40
24
|
* State structure for AssetsController.
|
|
@@ -67,8 +51,6 @@ export type AssetsControllerState = {
|
|
|
67
51
|
assetPreferences: {
|
|
68
52
|
[assetId: string]: AssetPreferences;
|
|
69
53
|
};
|
|
70
|
-
/** Currently-active ISO 4217 currency code */
|
|
71
|
-
selectedCurrency: SupportedCurrency;
|
|
72
54
|
};
|
|
73
55
|
/**
|
|
74
56
|
* Returns the default state for AssetsController.
|
|
@@ -105,7 +87,7 @@ export type AssetsControllerAssetsDetectedEvent = {
|
|
|
105
87
|
};
|
|
106
88
|
export type AssetsControllerEvents = AssetsControllerStateChangeEvent | AssetsControllerBalanceChangedEvent | AssetsControllerPriceChangedEvent | AssetsControllerAssetsDetectedEvent;
|
|
107
89
|
type AllowedActions = AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | GetTokenListState | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | GetRunnableSnaps | HandleSnapRequest | GetPermissions | BackendWebSocketServiceActions;
|
|
108
|
-
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent |
|
|
90
|
+
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent | TransactionControllerIncomingTransactionsReceivedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | BackendWebSocketServiceEvents;
|
|
109
91
|
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
110
92
|
/**
|
|
111
93
|
* Payload for the first init/fetch MetaMetrics event.
|
|
@@ -182,10 +164,8 @@ export type AssetsControllerOptions = {
|
|
|
182
164
|
* based on which chains they support. When active chains change, the controller
|
|
183
165
|
* dynamically adjusts subscriptions.
|
|
184
166
|
*
|
|
185
|
-
* 4. **
|
|
186
|
-
*
|
|
187
|
-
* Stops when either the UI closes or the keyring locks. See client-controller
|
|
188
|
-
* README for the combined pattern.
|
|
167
|
+
* 4. **Keyring Lifecycle**: Listens to KeyringController unlock/lock events to
|
|
168
|
+
* start/stop subscriptions when the wallet is unlocked or locked.
|
|
189
169
|
*
|
|
190
170
|
* ## Architecture
|
|
191
171
|
*
|
|
@@ -215,7 +195,6 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
215
195
|
assetTypes?: AssetType[];
|
|
216
196
|
forceUpdate?: boolean;
|
|
217
197
|
dataTypes?: DataType[];
|
|
218
|
-
assetsForPriceUpdate?: Caip19AssetId[];
|
|
219
198
|
}): Promise<Record<AccountId, Record<Caip19AssetId, Asset>>>;
|
|
220
199
|
getAssetsBalance(accounts: InternalAccount[], options?: {
|
|
221
200
|
chainIds?: ChainId[];
|
|
@@ -233,15 +212,10 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
233
212
|
* Custom assets are included in subscription and fetch operations.
|
|
234
213
|
* Adding a custom asset also unhides it if it was previously hidden.
|
|
235
214
|
*
|
|
236
|
-
* When `pendingMetadata` is provided (e.g. from the extension's pending-tokens
|
|
237
|
-
* flow), the token metadata is persisted immediately into `assetsInfo` so the
|
|
238
|
-
* UI can render it without waiting for the next pipeline fetch.
|
|
239
|
-
*
|
|
240
215
|
* @param accountId - The account ID to add the custom asset for.
|
|
241
216
|
* @param assetId - The CAIP-19 asset ID to add.
|
|
242
|
-
* @param pendingMetadata - Optional token metadata from the UI (pendingTokens format).
|
|
243
217
|
*/
|
|
244
|
-
addCustomAsset(accountId: AccountId, assetId: Caip19AssetId
|
|
218
|
+
addCustomAsset(accountId: AccountId, assetId: Caip19AssetId): Promise<void>;
|
|
245
219
|
/**
|
|
246
220
|
* Remove a custom asset from an account.
|
|
247
221
|
*
|
|
@@ -270,12 +244,6 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
270
244
|
* @param assetId - The CAIP-19 asset ID to unhide.
|
|
271
245
|
*/
|
|
272
246
|
unhideAsset(assetId: Caip19AssetId): void;
|
|
273
|
-
/**
|
|
274
|
-
* Set the current currency.
|
|
275
|
-
*
|
|
276
|
-
* @param selectedCurrency - The ISO 4217 currency code to set.
|
|
277
|
-
*/
|
|
278
|
-
setSelectedCurrency(selectedCurrency: SupportedCurrency): void;
|
|
279
247
|
/**
|
|
280
248
|
* Subscribe to price updates for all assets held by the given accounts.
|
|
281
249
|
* Polls PriceDataSource which fetches prices from balance state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,EACrD,0CAA0C;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,qCAAqC;AACtE,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,7 @@ import type { AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, Ac
|
|
|
2
2
|
import type { GetTokenListState } from "@metamask/assets-controllers";
|
|
3
3
|
import { BaseController } from "@metamask/base-controller";
|
|
4
4
|
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
5
|
-
import type {
|
|
6
|
-
import type { ApiPlatformClient, BackendWebSocketServiceActions, BackendWebSocketServiceEvents, SupportedCurrency } from "@metamask/core-backend";
|
|
5
|
+
import type { ApiPlatformClient, BackendWebSocketServiceActions, BackendWebSocketServiceEvents } from "@metamask/core-backend";
|
|
7
6
|
import type { KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
8
7
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
9
8
|
import type { Messenger } from "@metamask/messenger";
|
|
@@ -20,21 +19,6 @@ import type { RpcDataSourceConfig } from "./data-sources/RpcDataSource.mjs";
|
|
|
20
19
|
import type { AccountsControllerAccountBalancesUpdatedEvent } from "./data-sources/SnapDataSource.mjs";
|
|
21
20
|
import type { StakedBalanceDataSourceConfig } from "./data-sources/StakedBalanceDataSource.mjs";
|
|
22
21
|
import type { AccountId, AssetPreferences, ChainId, Caip19AssetId, AssetMetadata, AssetPrice, AssetBalance, AssetType, DataType, DataRequest, DataResponse, Asset } from "./types.mjs";
|
|
23
|
-
/**
|
|
24
|
-
* Metadata format passed from the UI when adding a custom token.
|
|
25
|
-
* Mirrors the "pendingTokens" shape used by the extension.
|
|
26
|
-
*/
|
|
27
|
-
export type PendingTokenMetadata = {
|
|
28
|
-
address: string;
|
|
29
|
-
symbol: string;
|
|
30
|
-
name: string;
|
|
31
|
-
decimals: number;
|
|
32
|
-
iconUrl?: string;
|
|
33
|
-
aggregators?: string[];
|
|
34
|
-
occurrences?: number;
|
|
35
|
-
chainId: string;
|
|
36
|
-
unlisted?: boolean;
|
|
37
|
-
};
|
|
38
22
|
declare const CONTROLLER_NAME: "AssetsController";
|
|
39
23
|
/**
|
|
40
24
|
* State structure for AssetsController.
|
|
@@ -67,8 +51,6 @@ export type AssetsControllerState = {
|
|
|
67
51
|
assetPreferences: {
|
|
68
52
|
[assetId: string]: AssetPreferences;
|
|
69
53
|
};
|
|
70
|
-
/** Currently-active ISO 4217 currency code */
|
|
71
|
-
selectedCurrency: SupportedCurrency;
|
|
72
54
|
};
|
|
73
55
|
/**
|
|
74
56
|
* Returns the default state for AssetsController.
|
|
@@ -105,7 +87,7 @@ export type AssetsControllerAssetsDetectedEvent = {
|
|
|
105
87
|
};
|
|
106
88
|
export type AssetsControllerEvents = AssetsControllerStateChangeEvent | AssetsControllerBalanceChangedEvent | AssetsControllerPriceChangedEvent | AssetsControllerAssetsDetectedEvent;
|
|
107
89
|
type AllowedActions = AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | GetTokenListState | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | GetRunnableSnaps | HandleSnapRequest | GetPermissions | BackendWebSocketServiceActions;
|
|
108
|
-
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent |
|
|
90
|
+
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent | TransactionControllerIncomingTransactionsReceivedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | BackendWebSocketServiceEvents;
|
|
109
91
|
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
110
92
|
/**
|
|
111
93
|
* Payload for the first init/fetch MetaMetrics event.
|
|
@@ -182,10 +164,8 @@ export type AssetsControllerOptions = {
|
|
|
182
164
|
* based on which chains they support. When active chains change, the controller
|
|
183
165
|
* dynamically adjusts subscriptions.
|
|
184
166
|
*
|
|
185
|
-
* 4. **
|
|
186
|
-
*
|
|
187
|
-
* Stops when either the UI closes or the keyring locks. See client-controller
|
|
188
|
-
* README for the combined pattern.
|
|
167
|
+
* 4. **Keyring Lifecycle**: Listens to KeyringController unlock/lock events to
|
|
168
|
+
* start/stop subscriptions when the wallet is unlocked or locked.
|
|
189
169
|
*
|
|
190
170
|
* ## Architecture
|
|
191
171
|
*
|
|
@@ -215,7 +195,6 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
215
195
|
assetTypes?: AssetType[];
|
|
216
196
|
forceUpdate?: boolean;
|
|
217
197
|
dataTypes?: DataType[];
|
|
218
|
-
assetsForPriceUpdate?: Caip19AssetId[];
|
|
219
198
|
}): Promise<Record<AccountId, Record<Caip19AssetId, Asset>>>;
|
|
220
199
|
getAssetsBalance(accounts: InternalAccount[], options?: {
|
|
221
200
|
chainIds?: ChainId[];
|
|
@@ -233,15 +212,10 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
233
212
|
* Custom assets are included in subscription and fetch operations.
|
|
234
213
|
* Adding a custom asset also unhides it if it was previously hidden.
|
|
235
214
|
*
|
|
236
|
-
* When `pendingMetadata` is provided (e.g. from the extension's pending-tokens
|
|
237
|
-
* flow), the token metadata is persisted immediately into `assetsInfo` so the
|
|
238
|
-
* UI can render it without waiting for the next pipeline fetch.
|
|
239
|
-
*
|
|
240
215
|
* @param accountId - The account ID to add the custom asset for.
|
|
241
216
|
* @param assetId - The CAIP-19 asset ID to add.
|
|
242
|
-
* @param pendingMetadata - Optional token metadata from the UI (pendingTokens format).
|
|
243
217
|
*/
|
|
244
|
-
addCustomAsset(accountId: AccountId, assetId: Caip19AssetId
|
|
218
|
+
addCustomAsset(accountId: AccountId, assetId: Caip19AssetId): Promise<void>;
|
|
245
219
|
/**
|
|
246
220
|
* Remove a custom asset from an account.
|
|
247
221
|
*
|
|
@@ -270,12 +244,6 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
270
244
|
* @param assetId - The CAIP-19 asset ID to unhide.
|
|
271
245
|
*/
|
|
272
246
|
unhideAsset(assetId: Caip19AssetId): void;
|
|
273
|
-
/**
|
|
274
|
-
* Set the current currency.
|
|
275
|
-
*
|
|
276
|
-
* @param selectedCurrency - The ISO 4217 currency code to set.
|
|
277
|
-
*/
|
|
278
|
-
setSelectedCurrency(selectedCurrency: SupportedCurrency): void;
|
|
279
247
|
/**
|
|
280
248
|
* Subscribe to price updates for all assets held by the given accounts.
|
|
281
249
|
* Polls PriceDataSource which fetches prices from balance state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,EACrD,0CAA0C;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,qCAAqC;AACtE,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,8 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
11
|
};
|
|
12
|
-
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trackMetaMetricsEvent, _AssetsController_firstInitFetchReported,
|
|
12
|
+
var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trackMetaMetricsEvent, _AssetsController_firstInitFetchReported, _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_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_registerActionHandlers, _AssetsController_executeMiddlewares, _AssetsController_updateState, _AssetsController_getAssetsFromState, _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;
|
|
13
13
|
import { BaseController } from "@metamask/base-controller";
|
|
14
|
-
import { clientControllerSelectors } from "@metamask/client-controller";
|
|
15
14
|
import { isCaipChainId, isStrictHexString, parseCaipAssetType, parseCaipChainId } from "@metamask/utils";
|
|
16
15
|
import { Mutex } from "async-mutex";
|
|
17
16
|
import BigNumberJS from "bignumber.js";
|
|
@@ -26,7 +25,6 @@ import { StakedBalanceDataSource } from "./data-sources/StakedBalanceDataSource.
|
|
|
26
25
|
import { TokenDataSource } from "./data-sources/TokenDataSource.mjs";
|
|
27
26
|
import { projectLogger, createModuleLogger } from "./logger.mjs";
|
|
28
27
|
import { DetectionMiddleware } from "./middlewares/DetectionMiddleware.mjs";
|
|
29
|
-
import { createParallelBalanceMiddleware, createParallelMiddleware } from "./middlewares/ParallelMiddleware.mjs";
|
|
30
28
|
import { normalizeAssetId } from "./utils.mjs";
|
|
31
29
|
// ============================================================================
|
|
32
30
|
// CONTROLLER CONSTANTS
|
|
@@ -59,7 +57,6 @@ export function getDefaultAssetsControllerState() {
|
|
|
59
57
|
assetsPrice: {},
|
|
60
58
|
customAssets: {},
|
|
61
59
|
assetPreferences: {},
|
|
62
|
-
selectedCurrency: 'usd',
|
|
63
60
|
};
|
|
64
61
|
}
|
|
65
62
|
// ============================================================================
|
|
@@ -96,12 +93,6 @@ const stateMetadata = {
|
|
|
96
93
|
includeInDebugSnapshot: false,
|
|
97
94
|
usedInUi: true,
|
|
98
95
|
},
|
|
99
|
-
selectedCurrency: {
|
|
100
|
-
persist: true,
|
|
101
|
-
includeInStateLogs: false,
|
|
102
|
-
includeInDebugSnapshot: false,
|
|
103
|
-
usedInUi: true,
|
|
104
|
-
},
|
|
105
96
|
};
|
|
106
97
|
// ============================================================================
|
|
107
98
|
// HELPER FUNCTIONS
|
|
@@ -155,9 +146,6 @@ function normalizeResponse(response) {
|
|
|
155
146
|
if (response.errors) {
|
|
156
147
|
normalized.errors = { ...response.errors };
|
|
157
148
|
}
|
|
158
|
-
if (response.updateMode) {
|
|
159
|
-
normalized.updateMode = response.updateMode;
|
|
160
|
-
}
|
|
161
149
|
return normalized;
|
|
162
150
|
}
|
|
163
151
|
// ============================================================================
|
|
@@ -179,10 +167,8 @@ function normalizeResponse(response) {
|
|
|
179
167
|
* based on which chains they support. When active chains change, the controller
|
|
180
168
|
* dynamically adjusts subscriptions.
|
|
181
169
|
*
|
|
182
|
-
* 4. **
|
|
183
|
-
*
|
|
184
|
-
* Stops when either the UI closes or the keyring locks. See client-controller
|
|
185
|
-
* README for the combined pattern.
|
|
170
|
+
* 4. **Keyring Lifecycle**: Listens to KeyringController unlock/lock events to
|
|
171
|
+
* start/stop subscriptions when the wallet is unlocked or locked.
|
|
186
172
|
*
|
|
187
173
|
* ## Architecture
|
|
188
174
|
*
|
|
@@ -212,10 +198,6 @@ export class AssetsController extends BaseController {
|
|
|
212
198
|
_AssetsController_trackMetaMetricsEvent.set(this, void 0);
|
|
213
199
|
/** Whether we have already reported first init fetch for this session (reset on #stop). */
|
|
214
200
|
_AssetsController_firstInitFetchReported.set(this, false);
|
|
215
|
-
/** Whether the client (UI) is open. Combined with #keyringUnlocked for #updateActive. */
|
|
216
|
-
_AssetsController_uiOpen.set(this, false);
|
|
217
|
-
/** Whether the keyring is unlocked. Combined with #uiOpen for #updateActive. */
|
|
218
|
-
_AssetsController_keyringUnlocked.set(this, false);
|
|
219
201
|
_AssetsController_controllerMutex.set(this, new Mutex());
|
|
220
202
|
/**
|
|
221
203
|
* Active balance subscriptions keyed by account ID.
|
|
@@ -272,7 +254,6 @@ export class AssetsController extends BaseController {
|
|
|
272
254
|
}), "f");
|
|
273
255
|
__classPrivateFieldSet(this, _AssetsController_priceDataSource, new PriceDataSource({
|
|
274
256
|
queryApiClient,
|
|
275
|
-
getSelectedCurrency: () => this.state.selectedCurrency,
|
|
276
257
|
...priceDataSourceConfig,
|
|
277
258
|
}), "f");
|
|
278
259
|
__classPrivateFieldSet(this, _AssetsController_detectionMiddleware, new DetectionMiddleware(), "f");
|
|
@@ -286,7 +267,7 @@ export class AssetsController extends BaseController {
|
|
|
286
267
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_initializeState).call(this);
|
|
287
268
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeToEvents).call(this);
|
|
288
269
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_registerActionHandlers).call(this);
|
|
289
|
-
// Subscriptions start only
|
|
270
|
+
// Subscriptions start only on KeyringController:unlock -> #start(), not here.
|
|
290
271
|
// Subscribe to basic-functionality changes after construction so a synchronous
|
|
291
272
|
// onChange during subscribe cannot run before data sources are initialized.
|
|
292
273
|
if (subscribeToBasicFunctionalityChange) {
|
|
@@ -350,9 +331,6 @@ export class AssetsController extends BaseController {
|
|
|
350
331
|
const chainIds = options?.chainIds ?? [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")];
|
|
351
332
|
const assetTypes = options?.assetTypes ?? ['fungible'];
|
|
352
333
|
const dataTypes = options?.dataTypes ?? ['balance', 'metadata', 'price'];
|
|
353
|
-
if (accounts.length === 0 || chainIds.length === 0) {
|
|
354
|
-
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetsFromState).call(this, accounts, chainIds, assetTypes);
|
|
355
|
-
}
|
|
356
334
|
// Collect custom assets for all requested accounts
|
|
357
335
|
const customAssets = [];
|
|
358
336
|
for (const account of accounts) {
|
|
@@ -366,21 +344,16 @@ export class AssetsController extends BaseController {
|
|
|
366
344
|
dataTypes,
|
|
367
345
|
customAssets: customAssets.length > 0 ? customAssets : undefined,
|
|
368
346
|
forceUpdate: true,
|
|
369
|
-
assetsForPriceUpdate: options?.assetsForPriceUpdate,
|
|
370
347
|
});
|
|
371
348
|
const sources = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)
|
|
372
349
|
? [
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
378
|
-
]),
|
|
350
|
+
__classPrivateFieldGet(this, _AssetsController_accountsApiDataSource, "f"),
|
|
351
|
+
__classPrivateFieldGet(this, _AssetsController_snapDataSource, "f"),
|
|
352
|
+
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
353
|
+
__classPrivateFieldGet(this, _AssetsController_stakedBalanceDataSource, "f"),
|
|
379
354
|
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
__classPrivateFieldGet(this, _AssetsController_priceDataSource, "f"),
|
|
383
|
-
]),
|
|
355
|
+
__classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"),
|
|
356
|
+
__classPrivateFieldGet(this, _AssetsController_priceDataSource, "f"),
|
|
384
357
|
]
|
|
385
358
|
: [
|
|
386
359
|
__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
|
|
@@ -388,7 +361,7 @@ export class AssetsController extends BaseController {
|
|
|
388
361
|
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
389
362
|
];
|
|
390
363
|
const { response, durationByDataSource } = await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_executeMiddlewares).call(this, sources, request);
|
|
391
|
-
await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateState).call(this,
|
|
364
|
+
await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateState).call(this, response);
|
|
392
365
|
if (__classPrivateFieldGet(this, _AssetsController_trackMetaMetricsEvent, "f") && !__classPrivateFieldGet(this, _AssetsController_firstInitFetchReported, "f")) {
|
|
393
366
|
__classPrivateFieldSet(this, _AssetsController_firstInitFetchReported, true, "f");
|
|
394
367
|
const durationMs = Date.now() - startTime;
|
|
@@ -399,8 +372,7 @@ export class AssetsController extends BaseController {
|
|
|
399
372
|
});
|
|
400
373
|
}
|
|
401
374
|
}
|
|
402
|
-
|
|
403
|
-
return result;
|
|
375
|
+
return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getAssetsFromState).call(this, accounts, chainIds, assetTypes);
|
|
404
376
|
}
|
|
405
377
|
async getAssetsBalance(accounts, options) {
|
|
406
378
|
// Reuse getAssets with dataTypes: ['balance'] only
|
|
@@ -451,15 +423,10 @@ export class AssetsController extends BaseController {
|
|
|
451
423
|
* Custom assets are included in subscription and fetch operations.
|
|
452
424
|
* Adding a custom asset also unhides it if it was previously hidden.
|
|
453
425
|
*
|
|
454
|
-
* When `pendingMetadata` is provided (e.g. from the extension's pending-tokens
|
|
455
|
-
* flow), the token metadata is persisted immediately into `assetsInfo` so the
|
|
456
|
-
* UI can render it without waiting for the next pipeline fetch.
|
|
457
|
-
*
|
|
458
426
|
* @param accountId - The account ID to add the custom asset for.
|
|
459
427
|
* @param assetId - The CAIP-19 asset ID to add.
|
|
460
|
-
* @param pendingMetadata - Optional token metadata from the UI (pendingTokens format).
|
|
461
428
|
*/
|
|
462
|
-
async addCustomAsset(accountId, assetId
|
|
429
|
+
async addCustomAsset(accountId, assetId) {
|
|
463
430
|
const normalizedAssetId = normalizeAssetId(assetId);
|
|
464
431
|
log('Adding custom asset', { accountId, assetId: normalizedAssetId });
|
|
465
432
|
this.update((state) => {
|
|
@@ -479,28 +446,6 @@ export class AssetsController extends BaseController {
|
|
|
479
446
|
delete state.assetPreferences[normalizedAssetId];
|
|
480
447
|
}
|
|
481
448
|
}
|
|
482
|
-
// Persist metadata from the UI so the token is immediately renderable
|
|
483
|
-
if (pendingMetadata) {
|
|
484
|
-
const parsed = parseCaipAssetType(normalizedAssetId);
|
|
485
|
-
let tokenType = 'erc20';
|
|
486
|
-
if (parsed.assetNamespace === 'slip44') {
|
|
487
|
-
tokenType = 'native';
|
|
488
|
-
}
|
|
489
|
-
else if (parsed.assetNamespace === 'spl') {
|
|
490
|
-
tokenType = 'spl';
|
|
491
|
-
}
|
|
492
|
-
const assetMetadata = {
|
|
493
|
-
type: tokenType,
|
|
494
|
-
symbol: pendingMetadata.symbol,
|
|
495
|
-
name: pendingMetadata.name,
|
|
496
|
-
decimals: pendingMetadata.decimals,
|
|
497
|
-
image: pendingMetadata.iconUrl,
|
|
498
|
-
aggregators: pendingMetadata.aggregators,
|
|
499
|
-
occurrences: pendingMetadata.occurrences,
|
|
500
|
-
};
|
|
501
|
-
state.assetsInfo[normalizedAssetId] =
|
|
502
|
-
assetMetadata;
|
|
503
|
-
}
|
|
504
449
|
});
|
|
505
450
|
// Fetch data for the newly added custom asset
|
|
506
451
|
const account = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).find((a) => a.id === accountId);
|
|
@@ -579,34 +524,6 @@ export class AssetsController extends BaseController {
|
|
|
579
524
|
});
|
|
580
525
|
}
|
|
581
526
|
// ============================================================================
|
|
582
|
-
// CURRENT CURRENCY MANAGEMENT
|
|
583
|
-
// ============================================================================
|
|
584
|
-
/**
|
|
585
|
-
* Set the current currency.
|
|
586
|
-
*
|
|
587
|
-
* @param selectedCurrency - The ISO 4217 currency code to set.
|
|
588
|
-
*/
|
|
589
|
-
setSelectedCurrency(selectedCurrency) {
|
|
590
|
-
const previousCurrency = this.state.selectedCurrency;
|
|
591
|
-
if (previousCurrency === selectedCurrency) {
|
|
592
|
-
return;
|
|
593
|
-
}
|
|
594
|
-
this.update((state) => {
|
|
595
|
-
state.selectedCurrency = selectedCurrency;
|
|
596
|
-
});
|
|
597
|
-
log('Current currency changed', {
|
|
598
|
-
previousCurrency,
|
|
599
|
-
selectedCurrency,
|
|
600
|
-
});
|
|
601
|
-
this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), {
|
|
602
|
-
forceUpdate: true,
|
|
603
|
-
dataTypes: ['price'],
|
|
604
|
-
assetsForPriceUpdate: Object.values(this.state.assetsBalance).flatMap((balances) => Object.keys(balances)),
|
|
605
|
-
}).catch((error) => {
|
|
606
|
-
log('Failed to fetch asset prices after current currency change', error);
|
|
607
|
-
});
|
|
608
|
-
}
|
|
609
|
-
// ============================================================================
|
|
610
527
|
// SUBSCRIPTIONS
|
|
611
528
|
// ============================================================================
|
|
612
529
|
/**
|
|
@@ -684,15 +601,9 @@ export class AssetsController extends BaseController {
|
|
|
684
601
|
hasBalance: Boolean(response.assetsBalance),
|
|
685
602
|
hasPrice: Boolean(response.assetsPrice),
|
|
686
603
|
});
|
|
687
|
-
// Run through enrichment middlewares (Detection
|
|
604
|
+
// Run through enrichment middlewares (Event Stack: Detection → Token → Price)
|
|
688
605
|
// Include 'metadata' in dataTypes so TokenDataSource runs to enrich detected assets
|
|
689
|
-
const { response: enrichedResponse } = await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_executeMiddlewares).call(this, [
|
|
690
|
-
__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"),
|
|
691
|
-
createParallelMiddleware([
|
|
692
|
-
__classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"),
|
|
693
|
-
__classPrivateFieldGet(this, _AssetsController_priceDataSource, "f"),
|
|
694
|
-
]),
|
|
695
|
-
], request ?? {
|
|
606
|
+
const { response: enrichedResponse } = await __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_executeMiddlewares).call(this, [__classPrivateFieldGet(this, _AssetsController_detectionMiddleware, "f"), __classPrivateFieldGet(this, _AssetsController_tokenDataSource, "f"), __classPrivateFieldGet(this, _AssetsController_priceDataSource, "f")], request ?? {
|
|
696
607
|
accountsWithSupportedChains: [],
|
|
697
608
|
chainIds: [],
|
|
698
609
|
dataTypes: ['balance', 'metadata', 'price'],
|
|
@@ -731,7 +642,7 @@ export class AssetsController extends BaseController {
|
|
|
731
642
|
this.messenger.unregisterActionHandler('AssetsController:unhideAsset');
|
|
732
643
|
}
|
|
733
644
|
}
|
|
734
|
-
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trackMetaMetricsEvent = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(),
|
|
645
|
+
_AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trackMetaMetricsEvent = new WeakMap(), _AssetsController_firstInitFetchReported = 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_instances = new WeakSet(), _AssetsController_selectedAccounts_get = function _AssetsController_selectedAccounts_get() {
|
|
735
646
|
return this.messenger.call('AccountTreeController:getAccountsFromSelectedAccountGroup');
|
|
736
647
|
}, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
|
|
737
648
|
return [
|
|
@@ -781,27 +692,9 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
|
|
|
781
692
|
this.messenger.subscribe('NetworkEnablementController:stateChange', ({ enabledNetworkMap }) => {
|
|
782
693
|
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleEnabledNetworksChanged).call(this, enabledNetworkMap).catch(console.error);
|
|
783
694
|
});
|
|
784
|
-
//
|
|
785
|
-
this.messenger.subscribe('
|
|
786
|
-
|
|
787
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
788
|
-
}, clientControllerSelectors.selectIsUiOpen);
|
|
789
|
-
this.messenger.subscribe('KeyringController:unlock', () => {
|
|
790
|
-
__classPrivateFieldSet(this, _AssetsController_keyringUnlocked, true, "f");
|
|
791
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
792
|
-
});
|
|
793
|
-
this.messenger.subscribe('KeyringController:lock', () => {
|
|
794
|
-
__classPrivateFieldSet(this, _AssetsController_keyringUnlocked, false, "f");
|
|
795
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
|
|
796
|
-
});
|
|
797
|
-
}, _AssetsController_updateActive = function _AssetsController_updateActive() {
|
|
798
|
-
const shouldRun = __classPrivateFieldGet(this, _AssetsController_uiOpen, "f") && __classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f");
|
|
799
|
-
if (shouldRun) {
|
|
800
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_start).call(this);
|
|
801
|
-
}
|
|
802
|
-
else {
|
|
803
|
-
__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this);
|
|
804
|
-
}
|
|
695
|
+
// Keyring lifecycle: start when unlocked, stop when locked
|
|
696
|
+
this.messenger.subscribe('KeyringController:unlock', () => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_start).call(this));
|
|
697
|
+
this.messenger.subscribe('KeyringController:lock', () => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this));
|
|
805
698
|
}, _AssetsController_registerActionHandlers = function _AssetsController_registerActionHandlers() {
|
|
806
699
|
this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
807
700
|
}, _AssetsController_executeMiddlewares =
|
|
@@ -859,8 +752,8 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
|
|
|
859
752
|
// STATE MANAGEMENT
|
|
860
753
|
// ============================================================================
|
|
861
754
|
async function _AssetsController_updateState(response) {
|
|
755
|
+
// Normalize asset IDs (checksum EVM addresses) before storing in state
|
|
862
756
|
const normalizedResponse = normalizeResponse(response);
|
|
863
|
-
const mode = normalizedResponse.updateMode ?? 'merge';
|
|
864
757
|
const releaseLock = await __classPrivateFieldGet(this, _AssetsController_controllerMutex, "f").acquire();
|
|
865
758
|
try {
|
|
866
759
|
const previousState = this.state;
|
|
@@ -886,27 +779,15 @@ async function _AssetsController_updateState(response) {
|
|
|
886
779
|
if (normalizedResponse.assetsBalance) {
|
|
887
780
|
for (const [accountId, accountBalances] of Object.entries(normalizedResponse.assetsBalance)) {
|
|
888
781
|
const previousBalances = previousState.assetsBalance[accountId] ?? {};
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
const next = {
|
|
894
|
-
...accountBalances,
|
|
895
|
-
};
|
|
896
|
-
for (const customId of customAssetIds) {
|
|
897
|
-
if (!(customId in next)) {
|
|
898
|
-
const prev = previousBalances[customId];
|
|
899
|
-
next[customId] =
|
|
900
|
-
prev ?? { amount: '0' };
|
|
901
|
-
}
|
|
902
|
-
}
|
|
903
|
-
return next;
|
|
904
|
-
})()
|
|
905
|
-
: { ...previousBalances, ...accountBalances };
|
|
906
|
-
for (const [assetId, balance] of Object.entries(effective)) {
|
|
782
|
+
if (!balances[accountId]) {
|
|
783
|
+
balances[accountId] = {};
|
|
784
|
+
}
|
|
785
|
+
for (const [assetId, balance] of Object.entries(accountBalances)) {
|
|
907
786
|
const previousBalance = previousBalances[assetId];
|
|
908
|
-
const
|
|
787
|
+
const balanceData = balance;
|
|
788
|
+
const newAmount = balanceData.amount;
|
|
909
789
|
const oldAmount = previousBalance?.amount;
|
|
790
|
+
// Track if balance actually changed
|
|
910
791
|
if (oldAmount !== newAmount) {
|
|
911
792
|
changedBalances.push({
|
|
912
793
|
accountId,
|
|
@@ -916,7 +797,7 @@ async function _AssetsController_updateState(response) {
|
|
|
916
797
|
});
|
|
917
798
|
}
|
|
918
799
|
}
|
|
919
|
-
balances[accountId]
|
|
800
|
+
Object.assign(balances[accountId], accountBalances);
|
|
920
801
|
}
|
|
921
802
|
}
|
|
922
803
|
// Update prices in state
|
|
@@ -1094,7 +975,7 @@ async function _AssetsController_updateState(response) {
|
|
|
1094
975
|
}
|
|
1095
976
|
__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").clear();
|
|
1096
977
|
}, _AssetsController_subscribeAssets = function _AssetsController_subscribeAssets() {
|
|
1097
|
-
if (__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).length === 0
|
|
978
|
+
if (__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).length === 0) {
|
|
1098
979
|
return;
|
|
1099
980
|
}
|
|
1100
981
|
// Subscribe to balance updates (batched by data source)
|