@metamask/assets-controller 8.3.3 → 9.0.1
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 +32 -1
- package/dist/AssetsController.cjs +31 -7
- 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 +31 -7
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.cjs +5 -7
- 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 +5 -7
- package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +31 -51
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts +4 -2
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts +4 -2
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +31 -51
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.cjs +1 -27
- package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.d.cts.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.d.mts.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.mjs +1 -27
- package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -1
- package/dist/data-sources/TokenDataSource.cjs +9 -18
- package/dist/data-sources/TokenDataSource.cjs.map +1 -1
- package/dist/data-sources/TokenDataSource.d.cts +3 -1
- package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
- package/dist/data-sources/TokenDataSource.d.mts +3 -1
- package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
- package/dist/data-sources/TokenDataSource.mjs +9 -18
- package/dist/data-sources/TokenDataSource.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs +3 -5
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs +4 -6
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs +103 -9
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.cts +14 -5
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts +14 -5
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.mjs +103 -9
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.mjs.map +1 -1
- package/dist/defaults.cjs +20 -1
- package/dist/defaults.cjs.map +1 -1
- package/dist/defaults.d.cts.map +1 -1
- package/dist/defaults.d.mts.map +1 -1
- package/dist/defaults.mjs +20 -1
- package/dist/defaults.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcDataSource.d.cts","sourceRoot":"","sources":["../../src/data-sources/RpcDataSource.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EACV,2CAA2C,EAC3C,+BAA+B,EAC/B,iCAAiC,EAEjC,aAAa,EACd,qCAAqC;AACtC,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"RpcDataSource.d.cts","sourceRoot":"","sources":["../../src/data-sources/RpcDataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
2
2
|
import type { NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction, NetworkControllerStateChangeEvent, NetworkStatus } from "@metamask/network-controller";
|
|
3
|
-
import type {
|
|
3
|
+
import type { TransactionControllerTransactionConfirmedEvent } from "@metamask/transaction-controller";
|
|
4
4
|
import type { Hex } from "@metamask/utils";
|
|
5
5
|
import type { AssetsControllerGetStateAction, AssetsControllerMessenger } from "../AssetsController.mjs";
|
|
6
6
|
import type { ChainId, Caip19AssetId, DataRequest, DataResponse, Middleware } from "../types.mjs";
|
|
@@ -9,7 +9,7 @@ import type { DataSourceState, SubscriptionRequest } from "./AbstractDataSource.
|
|
|
9
9
|
import type { TokenListQueryClient } from "./evm-rpc-services/index.mjs";
|
|
10
10
|
declare const CONTROLLER_NAME = "RpcDataSource";
|
|
11
11
|
export type RpcDataSourceAllowedActions = NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | AssetsControllerGetStateAction;
|
|
12
|
-
export type RpcDataSourceAllowedEvents = NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent
|
|
12
|
+
export type RpcDataSourceAllowedEvents = NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent;
|
|
13
13
|
/** Network status for each chain */
|
|
14
14
|
export type ChainStatus = {
|
|
15
15
|
chainId: ChainId;
|
|
@@ -63,6 +63,8 @@ export type RpcDataSourceOptions = {
|
|
|
63
63
|
* token-list responses across detector polls.
|
|
64
64
|
*/
|
|
65
65
|
queryClient?: TokenListQueryClient;
|
|
66
|
+
/** Returns the asset type ('native' | 'erc20' | 'spl') for the given CAIP-19 asset ID */
|
|
67
|
+
getAssetType: (assetId: Caip19AssetId) => 'native' | 'erc20' | 'spl';
|
|
66
68
|
};
|
|
67
69
|
/**
|
|
68
70
|
* Convert CAIP chain ID or hex chain ID to hex chain ID.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcDataSource.d.mts","sourceRoot":"","sources":["../../src/data-sources/RpcDataSource.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EACV,2CAA2C,EAC3C,+BAA+B,EAC/B,iCAAiC,EAEjC,aAAa,EACd,qCAAqC;AACtC,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"RpcDataSource.d.mts","sourceRoot":"","sources":["../../src/data-sources/RpcDataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _RpcDataSource_instances, _RpcDataSource_messenger, _RpcDataSource_onActiveChainsUpdated, _RpcDataSource_getNativeAssetForChain, _RpcDataSource_timeout, _RpcDataSource_tokenDetectionEnabled, _RpcDataSource_useExternalService, _RpcDataSource_isOnboarded, _RpcDataSource_activeChains, _RpcDataSource_chainStatuses, _RpcDataSource_providerCache, _RpcDataSource_activeSubscriptions, _RpcDataSource_unsubscribeTransactionConfirmed,
|
|
12
|
+
var _RpcDataSource_instances, _RpcDataSource_messenger, _RpcDataSource_onActiveChainsUpdated, _RpcDataSource_getNativeAssetForChain, _RpcDataSource_timeout, _RpcDataSource_tokenDetectionEnabled, _RpcDataSource_useExternalService, _RpcDataSource_isOnboarded, _RpcDataSource_activeChains, _RpcDataSource_chainStatuses, _RpcDataSource_providerCache, _RpcDataSource_activeSubscriptions, _RpcDataSource_unsubscribeTransactionConfirmed, _RpcDataSource_multicallClient, _RpcDataSource_balanceFetcher, _RpcDataSource_tokenDetector, _RpcDataSource_getAssetType, _RpcDataSource_convertToHumanReadable, _RpcDataSource_collectMetadataForBalances, _RpcDataSource_hasValidDecimals, _RpcDataSource_pickValidDecimals, _RpcDataSource_handleBalanceUpdate, _RpcDataSource_handleDetectionUpdate, _RpcDataSource_subscribeToNetworkController, _RpcDataSource_subscribeToTransactionEvents, _RpcDataSource_onTransactionConfirmed, _RpcDataSource_refreshBalanceForChains, _RpcDataSource_initializeFromNetworkController, _RpcDataSource_updateFromNetworkState, _RpcDataSource_getProvider, _RpcDataSource_getMulticallProvider, _RpcDataSource_clearProviderCache, _RpcDataSource_fetchDecimalsViaRpc, _RpcDataSource_getExistingAssetsMetadata;
|
|
13
13
|
import { Web3Provider } from "@ethersproject/providers";
|
|
14
14
|
import { toHex } from "@metamask/controller-utils";
|
|
15
15
|
import { isStrictHexString, isCaipChainId, parseCaipAssetType, parseCaipChainId } from "@metamask/utils";
|
|
@@ -77,14 +77,15 @@ export class RpcDataSource extends AbstractDataSource {
|
|
|
77
77
|
/** Active subscriptions by ID */
|
|
78
78
|
_RpcDataSource_activeSubscriptions.set(this, new Map());
|
|
79
79
|
_RpcDataSource_unsubscribeTransactionConfirmed.set(this, undefined);
|
|
80
|
-
_RpcDataSource_unsubscribeIncomingTransactions.set(this, undefined);
|
|
81
80
|
// Rpc-datasource components
|
|
82
81
|
_RpcDataSource_multicallClient.set(this, void 0);
|
|
83
82
|
_RpcDataSource_balanceFetcher.set(this, void 0);
|
|
84
83
|
_RpcDataSource_tokenDetector.set(this, void 0);
|
|
84
|
+
_RpcDataSource_getAssetType.set(this, void 0);
|
|
85
85
|
__classPrivateFieldSet(this, _RpcDataSource_messenger, options.messenger, "f");
|
|
86
86
|
__classPrivateFieldSet(this, _RpcDataSource_onActiveChainsUpdated, options.onActiveChainsUpdated, "f");
|
|
87
87
|
__classPrivateFieldSet(this, _RpcDataSource_getNativeAssetForChain, options.getNativeAssetForChain, "f");
|
|
88
|
+
__classPrivateFieldSet(this, _RpcDataSource_getAssetType, options.getAssetType, "f");
|
|
88
89
|
__classPrivateFieldSet(this, _RpcDataSource_timeout, options.timeout ?? 10000, "f");
|
|
89
90
|
__classPrivateFieldSet(this, _RpcDataSource_tokenDetectionEnabled, options.tokenDetectionEnabled ?? (() => true), "f");
|
|
90
91
|
__classPrivateFieldSet(this, _RpcDataSource_useExternalService, options.useExternalService ?? (() => true), "f");
|
|
@@ -253,7 +254,7 @@ export class RpcDataSource extends AbstractDataSource {
|
|
|
253
254
|
const parsed = parseCaipAssetType(assetId);
|
|
254
255
|
const assetChainId = `${parsed.chain.namespace}:${parsed.chain.reference}`;
|
|
255
256
|
if (assetChainId === chainId &&
|
|
256
|
-
|
|
257
|
+
__classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, assetId) === 'erc20') {
|
|
257
258
|
const tokenAddress = parsed.assetReference.toLowerCase();
|
|
258
259
|
const normalizedId = normalizeAssetId(assetId);
|
|
259
260
|
const decimals = existingMetadata[normalizedId]?.decimals;
|
|
@@ -293,7 +294,7 @@ export class RpcDataSource extends AbstractDataSource {
|
|
|
293
294
|
let decimals = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_pickValidDecimals).call(this, stateMetadata, pipelineMetadata);
|
|
294
295
|
if (decimals === undefined) {
|
|
295
296
|
const parsed = parseCaipAssetType(balance.assetId);
|
|
296
|
-
if (
|
|
297
|
+
if (__classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, balance.assetId) === 'erc20') {
|
|
297
298
|
decimals = await __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_fetchDecimalsViaRpc).call(this, chainId, parsed.assetReference);
|
|
298
299
|
}
|
|
299
300
|
}
|
|
@@ -314,15 +315,11 @@ export class RpcDataSource extends AbstractDataSource {
|
|
|
314
315
|
if (!shouldSkipNative) {
|
|
315
316
|
assetsBalance[accountId][nativeAssetId] = { amount: '0' };
|
|
316
317
|
}
|
|
317
|
-
//
|
|
318
|
-
//
|
|
319
|
-
//
|
|
320
|
-
// nothing is in state yet, so we don't clobber that richer metadata.
|
|
318
|
+
// On error, emit a stub only when no valid metadata exists in state
|
|
319
|
+
// yet. Re-emitting existing metadata would overwrite richer entries
|
|
320
|
+
// (e.g. image/description added by AccountsAPI) with a simpler stub.
|
|
321
321
|
const existingNativeMeta = __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_getExistingAssetsMetadata).call(this)[nativeAssetId];
|
|
322
|
-
if (__classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_hasValidDecimals).call(this, existingNativeMeta)) {
|
|
323
|
-
assetsInfo[nativeAssetId] = existingNativeMeta;
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
322
|
+
if (!__classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_hasValidDecimals).call(this, existingNativeMeta)) {
|
|
326
323
|
const chainStatus = __classPrivateFieldGet(this, _RpcDataSource_chainStatuses, "f")[chainId];
|
|
327
324
|
if (chainStatus) {
|
|
328
325
|
assetsInfo[nativeAssetId] = {
|
|
@@ -397,7 +394,7 @@ export class RpcDataSource extends AbstractDataSource {
|
|
|
397
394
|
for (const asset of result.detectedAssets) {
|
|
398
395
|
if (asset.symbol && asset.decimals !== undefined) {
|
|
399
396
|
assetsInfo[asset.assetId] = {
|
|
400
|
-
type:
|
|
397
|
+
type: __classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, asset.assetId),
|
|
401
398
|
symbol: asset.symbol,
|
|
402
399
|
name: asset.name ?? asset.symbol,
|
|
403
400
|
decimals: asset.decimals,
|
|
@@ -605,7 +602,6 @@ export class RpcDataSource extends AbstractDataSource {
|
|
|
605
602
|
destroy() {
|
|
606
603
|
log('Destroying RpcDataSource');
|
|
607
604
|
__classPrivateFieldGet(this, _RpcDataSource_unsubscribeTransactionConfirmed, "f")?.call(this);
|
|
608
|
-
__classPrivateFieldGet(this, _RpcDataSource_unsubscribeIncomingTransactions, "f")?.call(this);
|
|
609
605
|
// Stop all polling
|
|
610
606
|
__classPrivateFieldGet(this, _RpcDataSource_balanceFetcher, "f").stopAllPolling();
|
|
611
607
|
__classPrivateFieldGet(this, _RpcDataSource_tokenDetector, "f").stopAllPolling();
|
|
@@ -615,7 +611,7 @@ export class RpcDataSource extends AbstractDataSource {
|
|
|
615
611
|
__classPrivateFieldGet(this, _RpcDataSource_providerCache, "f").clear();
|
|
616
612
|
}
|
|
617
613
|
}
|
|
618
|
-
_RpcDataSource_messenger = new WeakMap(), _RpcDataSource_onActiveChainsUpdated = new WeakMap(), _RpcDataSource_getNativeAssetForChain = new WeakMap(), _RpcDataSource_timeout = new WeakMap(), _RpcDataSource_tokenDetectionEnabled = new WeakMap(), _RpcDataSource_useExternalService = new WeakMap(), _RpcDataSource_isOnboarded = new WeakMap(), _RpcDataSource_activeChains = new WeakMap(), _RpcDataSource_chainStatuses = new WeakMap(), _RpcDataSource_providerCache = new WeakMap(), _RpcDataSource_activeSubscriptions = new WeakMap(), _RpcDataSource_unsubscribeTransactionConfirmed = new WeakMap(),
|
|
614
|
+
_RpcDataSource_messenger = new WeakMap(), _RpcDataSource_onActiveChainsUpdated = new WeakMap(), _RpcDataSource_getNativeAssetForChain = new WeakMap(), _RpcDataSource_timeout = new WeakMap(), _RpcDataSource_tokenDetectionEnabled = new WeakMap(), _RpcDataSource_useExternalService = new WeakMap(), _RpcDataSource_isOnboarded = new WeakMap(), _RpcDataSource_activeChains = new WeakMap(), _RpcDataSource_chainStatuses = new WeakMap(), _RpcDataSource_providerCache = new WeakMap(), _RpcDataSource_activeSubscriptions = new WeakMap(), _RpcDataSource_unsubscribeTransactionConfirmed = new WeakMap(), _RpcDataSource_multicallClient = new WeakMap(), _RpcDataSource_balanceFetcher = new WeakMap(), _RpcDataSource_tokenDetector = new WeakMap(), _RpcDataSource_getAssetType = new WeakMap(), _RpcDataSource_instances = new WeakSet(), _RpcDataSource_convertToHumanReadable = function _RpcDataSource_convertToHumanReadable(rawBalance, decimals) {
|
|
619
615
|
if (!Number.isFinite(decimals) || decimals < 0) {
|
|
620
616
|
log('Invalid decimals — defaulting balance to "0"', {
|
|
621
617
|
rawBalance,
|
|
@@ -637,32 +633,27 @@ _RpcDataSource_messenger = new WeakMap(), _RpcDataSource_onActiveChainsUpdated =
|
|
|
637
633
|
for (const balance of balances) {
|
|
638
634
|
const existingMeta = existingMetadata[balance.assetId];
|
|
639
635
|
const isNative = existingMeta?.type === 'native' ||
|
|
640
|
-
balance.assetId.toLowerCase() === nativeAssetId?.toLowerCase()
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
//
|
|
644
|
-
//
|
|
645
|
-
//
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
name: chainStatus.nativeCurrency,
|
|
656
|
-
decimals: 18,
|
|
657
|
-
};
|
|
658
|
-
}
|
|
636
|
+
balance.assetId.toLowerCase() === nativeAssetId?.toLowerCase() ||
|
|
637
|
+
__classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, balance.assetId) === 'native';
|
|
638
|
+
if (isNative && !__classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_hasValidDecimals).call(this, existingMeta)) {
|
|
639
|
+
// Only emit a stub when no valid metadata exists in state yet.
|
|
640
|
+
// Re-emitting existing metadata into the response would overwrite
|
|
641
|
+
// richer entries (e.g. image/description added by AccountsAPI) with
|
|
642
|
+
// a simpler stub on every balance poll cycle.
|
|
643
|
+
const chainStatus = __classPrivateFieldGet(this, _RpcDataSource_chainStatuses, "f")[chainId];
|
|
644
|
+
if (chainStatus) {
|
|
645
|
+
assetsInfo[balance.assetId] = {
|
|
646
|
+
type: 'native',
|
|
647
|
+
symbol: chainStatus.nativeCurrency,
|
|
648
|
+
name: chainStatus.nativeCurrency,
|
|
649
|
+
decimals: 18,
|
|
650
|
+
};
|
|
659
651
|
}
|
|
660
652
|
}
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
}
|
|
653
|
+
// For ERC-20 tokens and native tokens with existing valid metadata:
|
|
654
|
+
// do not re-emit — the existing state entry is already correct.
|
|
655
|
+
// Decimals for balance conversion are resolved via stateMetadata in
|
|
656
|
+
// the callers (pickValidDecimals(stateMetadata, pipelineMetadata)).
|
|
666
657
|
}
|
|
667
658
|
return assetsInfo;
|
|
668
659
|
}, _RpcDataSource_hasValidDecimals = function _RpcDataSource_hasValidDecimals(metadata) {
|
|
@@ -741,7 +732,7 @@ async function _RpcDataSource_handleBalanceUpdate(result) {
|
|
|
741
732
|
// Only include if we have metadata (symbol and decimals at minimum)
|
|
742
733
|
if (asset.symbol && asset.decimals !== undefined) {
|
|
743
734
|
newMetadata[asset.assetId] = {
|
|
744
|
-
type:
|
|
735
|
+
type: __classPrivateFieldGet(this, _RpcDataSource_getAssetType, "f").call(this, asset.assetId),
|
|
745
736
|
symbol: asset.symbol,
|
|
746
737
|
name: asset.name ?? asset.symbol,
|
|
747
738
|
decimals: asset.decimals,
|
|
@@ -798,8 +789,6 @@ async function _RpcDataSource_handleBalanceUpdate(result) {
|
|
|
798
789
|
}, _RpcDataSource_subscribeToTransactionEvents = function _RpcDataSource_subscribeToTransactionEvents() {
|
|
799
790
|
const unsubConfirmed = __classPrivateFieldGet(this, _RpcDataSource_messenger, "f").subscribe('TransactionController:transactionConfirmed', __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_onTransactionConfirmed).bind(this));
|
|
800
791
|
__classPrivateFieldSet(this, _RpcDataSource_unsubscribeTransactionConfirmed, typeof unsubConfirmed === 'function' ? unsubConfirmed : undefined, "f");
|
|
801
|
-
const unsubIncoming = __classPrivateFieldGet(this, _RpcDataSource_messenger, "f").subscribe('TransactionController:incomingTransactionsReceived', __classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_onIncomingTransactions).bind(this));
|
|
802
|
-
__classPrivateFieldSet(this, _RpcDataSource_unsubscribeIncomingTransactions, typeof unsubIncoming === 'function' ? unsubIncoming : undefined, "f");
|
|
803
792
|
}, _RpcDataSource_onTransactionConfirmed = function _RpcDataSource_onTransactionConfirmed(payload) {
|
|
804
793
|
const hexChainId = payload?.chainId;
|
|
805
794
|
if (!hexChainId) {
|
|
@@ -809,15 +798,6 @@ async function _RpcDataSource_handleBalanceUpdate(result) {
|
|
|
809
798
|
__classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_refreshBalanceForChains).call(this, [caipChainId]).catch((error) => {
|
|
810
799
|
log('Failed to refresh balance after transaction confirmed', { error });
|
|
811
800
|
});
|
|
812
|
-
}, _RpcDataSource_onIncomingTransactions = function _RpcDataSource_onIncomingTransactions(payload) {
|
|
813
|
-
const chainIds = Array.from(new Set((payload ?? [])
|
|
814
|
-
.map((item) => item?.chainId)
|
|
815
|
-
.filter((id) => Boolean(id))));
|
|
816
|
-
const caipChainIds = chainIds.map((hexChainId) => `eip155:${parseInt(hexChainId, 16)}`);
|
|
817
|
-
const toRefresh = caipChainIds.length > 0 ? caipChainIds : [...__classPrivateFieldGet(this, _RpcDataSource_activeChains, "f")];
|
|
818
|
-
__classPrivateFieldGet(this, _RpcDataSource_instances, "m", _RpcDataSource_refreshBalanceForChains).call(this, toRefresh).catch((error) => {
|
|
819
|
-
log('Failed to refresh balance after incoming transactions', { error });
|
|
820
|
-
});
|
|
821
801
|
}, _RpcDataSource_refreshBalanceForChains =
|
|
822
802
|
/**
|
|
823
803
|
* Fetch balances for the given chains across all active subscriptions and
|