@metamask/transaction-controller 41.0.0 → 42.0.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.
Files changed (101) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/README.md +4 -0
  3. package/dist/TransactionController.cjs +59 -51
  4. package/dist/TransactionController.cjs.map +1 -1
  5. package/dist/TransactionController.d.cts +12 -15
  6. package/dist/TransactionController.d.cts.map +1 -1
  7. package/dist/TransactionController.d.mts +12 -15
  8. package/dist/TransactionController.d.mts.map +1 -1
  9. package/dist/TransactionController.mjs +61 -55
  10. package/dist/TransactionController.mjs.map +1 -1
  11. package/dist/api/accounts-api.cjs +48 -3
  12. package/dist/api/accounts-api.cjs.map +1 -1
  13. package/dist/api/accounts-api.d.cts +49 -0
  14. package/dist/api/accounts-api.d.cts.map +1 -1
  15. package/dist/api/accounts-api.d.mts +49 -0
  16. package/dist/api/accounts-api.d.mts.map +1 -1
  17. package/dist/api/accounts-api.mjs +46 -2
  18. package/dist/api/accounts-api.mjs.map +1 -1
  19. package/dist/constants.cjs +1 -85
  20. package/dist/constants.cjs.map +1 -1
  21. package/dist/constants.d.cts +0 -84
  22. package/dist/constants.d.cts.map +1 -1
  23. package/dist/constants.d.mts +0 -84
  24. package/dist/constants.d.mts.map +1 -1
  25. package/dist/constants.mjs +0 -84
  26. package/dist/constants.mjs.map +1 -1
  27. package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs +1 -2
  28. package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs.map +1 -1
  29. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs +183 -0
  30. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs.map +1 -0
  31. package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts +12 -0
  32. package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts.map +1 -0
  33. package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts +12 -0
  34. package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts.map +1 -0
  35. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs +183 -0
  36. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs.map +1 -0
  37. package/dist/helpers/GasFeePoller.cjs +2 -0
  38. package/dist/helpers/GasFeePoller.cjs.map +1 -1
  39. package/dist/helpers/GasFeePoller.d.cts.map +1 -1
  40. package/dist/helpers/GasFeePoller.d.mts.map +1 -1
  41. package/dist/helpers/GasFeePoller.mjs +2 -0
  42. package/dist/helpers/GasFeePoller.mjs.map +1 -1
  43. package/dist/helpers/IncomingTransactionHelper.cjs +92 -142
  44. package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
  45. package/dist/helpers/IncomingTransactionHelper.d.cts +10 -16
  46. package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
  47. package/dist/helpers/IncomingTransactionHelper.d.mts +10 -16
  48. package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
  49. package/dist/helpers/IncomingTransactionHelper.mjs +93 -143
  50. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
  51. package/dist/helpers/MethodDataHelper.cjs +2 -0
  52. package/dist/helpers/MethodDataHelper.cjs.map +1 -1
  53. package/dist/helpers/MethodDataHelper.d.cts.map +1 -1
  54. package/dist/helpers/MethodDataHelper.d.mts.map +1 -1
  55. package/dist/helpers/MethodDataHelper.mjs +2 -0
  56. package/dist/helpers/MethodDataHelper.mjs.map +1 -1
  57. package/dist/helpers/MultichainTrackingHelper.cjs +23 -70
  58. package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -1
  59. package/dist/helpers/MultichainTrackingHelper.d.cts +1 -14
  60. package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -1
  61. package/dist/helpers/MultichainTrackingHelper.d.mts +1 -14
  62. package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -1
  63. package/dist/helpers/MultichainTrackingHelper.mjs +23 -70
  64. package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
  65. package/dist/helpers/PendingTransactionTracker.cjs +2 -0
  66. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
  67. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
  68. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
  69. package/dist/helpers/PendingTransactionTracker.mjs +2 -0
  70. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  71. package/dist/index.cjs +3 -2
  72. package/dist/index.cjs.map +1 -1
  73. package/dist/index.d.cts +4 -4
  74. package/dist/index.d.cts.map +1 -1
  75. package/dist/index.d.mts +4 -4
  76. package/dist/index.d.mts.map +1 -1
  77. package/dist/index.mjs +2 -1
  78. package/dist/index.mjs.map +1 -1
  79. package/dist/types.cjs.map +1 -1
  80. package/dist/types.d.cts +25 -14
  81. package/dist/types.d.cts.map +1 -1
  82. package/dist/types.d.mts +25 -14
  83. package/dist/types.d.mts.map +1 -1
  84. package/dist/types.mjs.map +1 -1
  85. package/package.json +8 -6
  86. package/dist/helpers/EtherscanRemoteTransactionSource.cjs +0 -158
  87. package/dist/helpers/EtherscanRemoteTransactionSource.cjs.map +0 -1
  88. package/dist/helpers/EtherscanRemoteTransactionSource.d.cts +0 -16
  89. package/dist/helpers/EtherscanRemoteTransactionSource.d.cts.map +0 -1
  90. package/dist/helpers/EtherscanRemoteTransactionSource.d.mts +0 -16
  91. package/dist/helpers/EtherscanRemoteTransactionSource.d.mts.map +0 -1
  92. package/dist/helpers/EtherscanRemoteTransactionSource.mjs +0 -158
  93. package/dist/helpers/EtherscanRemoteTransactionSource.mjs.map +0 -1
  94. package/dist/utils/etherscan.cjs +0 -116
  95. package/dist/utils/etherscan.cjs.map +0 -1
  96. package/dist/utils/etherscan.d.cts +0 -74
  97. package/dist/utils/etherscan.d.cts.map +0 -1
  98. package/dist/utils/etherscan.d.mts +0 -74
  99. package/dist/utils/etherscan.d.mts.map +0 -1
  100. package/dist/utils/etherscan.mjs +0 -110
  101. package/dist/utils/etherscan.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,58 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [42.0.0]
11
+
12
+ ### Added
13
+
14
+ - Retrieve incoming transactions using Accounts API ([#4927](https://github.com/MetaMask/core/pull/4927))
15
+ - Add `INCOMING_TRANSACTIONS_SUPPORTED_CHAIN_IDS` constant.
16
+
17
+ ### Changed
18
+
19
+ - **BREAKING:** Retrieve incoming transactions using Accounts API ([#4927](https://github.com/MetaMask/core/pull/4927))
20
+ - Rename `TransactionControllerIncomingTransactionBlockReceivedEvent` to `TransactionControllerIncomingTransactionsReceivedEvent`.
21
+ - Replace `networkClientIds` argument with `chainIds` in following methods:
22
+ - `startIncomingTransactionPolling`
23
+ - `stopIncomingTransactionPolling`
24
+ - `updateIncomingTransactions`
25
+ - Bump `@metamask/eth-block-tracker` from `^11.0.2` to `^11.0.3` ([#5025](https://github.com/MetaMask/core/pull/5025))
26
+
27
+ ### Removed
28
+
29
+ - **BREAKING:** Retrieve incoming transactions using Accounts API ([#4927](https://github.com/MetaMask/core/pull/4927))
30
+ - Remove `ETHERSCAN_SUPPORTED_NETWORKS` constant.
31
+ - Remove types:
32
+ - `EtherscanTransactionMeta`
33
+ - `RemoteTransactionSource`
34
+ - `RemoteTransactionSourceRequest`
35
+
36
+ ## [41.1.0]
37
+
38
+ ### Added
39
+
40
+ - Add optional `destinationChainId` property to `TransactionMeta` to facilitate Bridge transactions ([#4988](https://github.com/MetaMask/core/pull/4988))
41
+
42
+ ### Changed
43
+
44
+ - Bump `@metamask/controller-utils` from `^11.4.3` to `^11.4.4` ([#5012](https://github.com/MetaMask/core/pull/5012))
45
+
46
+ ### Fixed
47
+
48
+ - Make implicit peer dependencies explicit ([#4974](https://github.com/MetaMask/core/pull/4974))
49
+ - Add the following packages as peer dependencies of this package to satisfy peer dependency requirements from other dependencies:
50
+ - `@babel/runtime` `^7.0.0` (required by `@metamask/ethjs-provider-http`)
51
+ - `@metamask/eth-block-tracker` `>=9` (required by `@metamask/nonce-tracker`)
52
+ - These dependencies really should be present in projects that consume this package (e.g. MetaMask clients), and this change ensures that they now are.
53
+ - Furthermore, we are assuming that clients already use these dependencies, since otherwise it would be impossible to consume this package in its entirety or even create a working build. Hence, the addition of these peer dependencies is really a formality and should not be breaking.
54
+ - Correct ESM-compatible build so that imports of the following packages that re-export other modules via `export *` are no longer corrupted: ([#5011](https://github.com/MetaMask/core/pull/5011))
55
+ - `@ethereumjs/common`
56
+ - `@ethereumjs/util`
57
+ - `@metamask/eth-query`
58
+ - `bn.js`
59
+ - `fast-json-patch`
60
+ - `lodash`
61
+
10
62
  ## [41.0.0]
11
63
 
12
64
  ### Added
@@ -1163,7 +1215,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1163
1215
 
1164
1216
  All changes listed after this point were applied to this package following the monorepo conversion.
1165
1217
 
1166
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@41.0.0...HEAD
1218
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@42.0.0...HEAD
1219
+ [42.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@41.1.0...@metamask/transaction-controller@42.0.0
1220
+ [41.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@41.0.0...@metamask/transaction-controller@41.1.0
1167
1221
  [41.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@40.1.0...@metamask/transaction-controller@41.0.0
1168
1222
  [40.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@40.0.0...@metamask/transaction-controller@40.1.0
1169
1223
  [40.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@39.1.0...@metamask/transaction-controller@40.0.0
package/README.md CHANGED
@@ -10,6 +10,10 @@ or
10
10
 
11
11
  `npm install @metamask/transaction-controller`
12
12
 
13
+ ## Compatibility
14
+
15
+ This package relies implicitly upon the `EventEmitter` module. This module is available natively in Node.js, but when using this package for the browser, make sure to use a polyfill such as `events`.
16
+
13
17
  ## Contributing
14
18
 
15
19
  This package is part of a monorepo. Instructions for contributing can be found in the [monorepo README](https://github.com/MetaMask/core#readme).
@@ -13,7 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createRemoteTransactionSource, _TransactionController_createIncomingTransactionHelper, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_removeIncomingTransactionHelperListeners, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_updateSubmitHistory;
16
+ var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_removeIncomingTransactionHelperListeners, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_updateSubmitHistory;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = exports.HARDFORK = void 0;
19
19
  const common_1 = require("@ethereumjs/common");
@@ -27,6 +27,8 @@ const nonce_tracker_1 = require("@metamask/nonce-tracker");
27
27
  const rpc_errors_1 = require("@metamask/rpc-errors");
28
28
  const utils_1 = require("@metamask/utils");
29
29
  const async_mutex_1 = require("async-mutex");
30
+ // This package purposefully relies on Node's EventEmitter module.
31
+ // eslint-disable-next-line import/no-nodejs-modules
30
32
  const events_1 = require("events");
31
33
  const lodash_1 = require("lodash");
32
34
  const uuid_1 = require("uuid");
@@ -36,7 +38,7 @@ const LineaGasFeeFlow_1 = require("./gas-flows/LineaGasFeeFlow.cjs");
36
38
  const OptimismLayer1GasFeeFlow_1 = require("./gas-flows/OptimismLayer1GasFeeFlow.cjs");
37
39
  const ScrollLayer1GasFeeFlow_1 = require("./gas-flows/ScrollLayer1GasFeeFlow.cjs");
38
40
  const TestGasFeeFlow_1 = require("./gas-flows/TestGasFeeFlow.cjs");
39
- const EtherscanRemoteTransactionSource_1 = require("./helpers/EtherscanRemoteTransactionSource.cjs");
41
+ const AccountsApiRemoteTransactionSource_1 = require("./helpers/AccountsApiRemoteTransactionSource.cjs");
40
42
  const GasFeePoller_1 = require("./helpers/GasFeePoller.cjs");
41
43
  const IncomingTransactionHelper_1 = require("./helpers/IncomingTransactionHelper.cjs");
42
44
  const MethodDataHelper_1 = require("./helpers/MethodDataHelper.cjs");
@@ -192,6 +194,8 @@ class TransactionController extends base_controller_1.BaseController {
192
194
  this.approvingTransactionIds = new Set();
193
195
  _TransactionController_methodDataHelper.set(this, void 0);
194
196
  this.mutex = new async_mutex_1.Mutex();
197
+ _TransactionController_incomingTransactionChainIds.set(this, new Set());
198
+ _TransactionController_incomingTransactionHelper.set(this, void 0);
195
199
  _TransactionController_incomingTransactionOptions.set(this, void 0);
196
200
  _TransactionController_pendingTransactionOptions.set(this, void 0);
197
201
  this.signAbortCallbacks = new Map();
@@ -247,12 +251,9 @@ class TransactionController extends base_controller_1.BaseController {
247
251
  return this.messagingSystem.call(`NetworkController:getNetworkClientById`, networkClientId);
248
252
  }),
249
253
  getNetworkClientRegistry,
250
- removeIncomingTransactionHelperListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removeIncomingTransactionHelperListeners).bind(this),
251
254
  removePendingTransactionTrackerListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removePendingTransactionTrackerListeners).bind(this),
252
255
  createNonceTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createNonceTracker).bind(this),
253
- createIncomingTransactionHelper: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createIncomingTransactionHelper).bind(this),
254
256
  createPendingTransactionTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).bind(this),
255
- createRemoteTransactionSource: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createRemoteTransactionSource).bind(this),
256
257
  onNetworkStateChange: (listener) => {
257
258
  this.messagingSystem.subscribe('NetworkController:stateChange', listener);
258
259
  },
@@ -281,6 +282,25 @@ class TransactionController extends base_controller_1.BaseController {
281
282
  _state.methodData[fourBytePrefix] = methodData;
282
283
  });
283
284
  });
285
+ const updateCache = (fn) => {
286
+ this.update((_state) => {
287
+ fn(_state.lastFetchedBlockNumbers);
288
+ });
289
+ };
290
+ __classPrivateFieldSet(this, _TransactionController_incomingTransactionHelper, new IncomingTransactionHelper_1.IncomingTransactionHelper({
291
+ getCache: () => this.state.lastFetchedBlockNumbers,
292
+ getChainIds: () => [...__classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f")],
293
+ getCurrentAccount: () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getSelectedAccount).call(this),
294
+ getLocalTransactions: () => this.state.transactions,
295
+ includeTokenTransfers: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").includeTokenTransfers,
296
+ isEnabled: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").isEnabled,
297
+ queryEntireHistory: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").queryEntireHistory,
298
+ remoteTransactionSource: new AccountsApiRemoteTransactionSource_1.AccountsApiRemoteTransactionSource(),
299
+ trimTransactions: this.trimTransactionsForState.bind(this),
300
+ updateCache,
301
+ updateTransactions: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").updateTransactions,
302
+ }), "f");
303
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addIncomingTransactionHelperListeners).call(this, __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f"));
284
304
  // when transactionsController state changes
285
305
  // check for pending transactions and start polling if there are any
286
306
  this.messagingSystem.subscribe('TransactionController:stateChange', __classPrivateFieldGet(this, _TransactionController_checkForPendingTransactionAndStartPolling, "f"));
@@ -417,14 +437,22 @@ class TransactionController extends base_controller_1.BaseController {
417
437
  transactionMeta: addedTransactionMeta,
418
438
  };
419
439
  }
420
- startIncomingTransactionPolling(networkClientIds) {
421
- __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").startIncomingTransactionPolling(networkClientIds);
440
+ startIncomingTransactionPolling(chainIds) {
441
+ chainIds.forEach((chainId) => __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").add(chainId));
442
+ __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").start();
422
443
  }
423
- stopIncomingTransactionPolling(networkClientIds) {
424
- __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopIncomingTransactionPolling(networkClientIds);
444
+ stopIncomingTransactionPolling(chainIds) {
445
+ chainIds?.forEach((chainId) => __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").delete(chainId));
446
+ if (!chainIds) {
447
+ __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").clear();
448
+ }
449
+ if (__classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").size === 0) {
450
+ __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").stop();
451
+ }
425
452
  }
426
- async updateIncomingTransactions(networkClientIds = []) {
427
- await __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").updateIncomingTransactions(networkClientIds);
453
+ async updateIncomingTransactions(chainIds) {
454
+ chainIds.forEach((chainId) => __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").add(chainId));
455
+ await __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").update();
428
456
  }
429
457
  /**
430
458
  * Attempts to cancel a transaction based on its ID by setting its status to "rejected"
@@ -1421,26 +1449,27 @@ class TransactionController extends base_controller_1.BaseController {
1421
1449
  };
1422
1450
  return common_1.Common.custom(customChainParams);
1423
1451
  }
1424
- onIncomingTransactions({ added, updated, }) {
1425
- this.update((state) => {
1426
- const { transactions } = state;
1427
- const existingTransactions = transactions.map((tx) => updated.find(({ hash }) => hash === tx.hash) ?? tx);
1428
- const updatedTransactions = [...added, ...existingTransactions].map((tx) => {
1429
- const { chainId } = tx;
1430
- const networkClientId = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNetworkClientId).call(this, { chainId });
1431
- return {
1432
- ...tx,
1433
- networkClientId,
1434
- };
1435
- });
1436
- state.transactions = this.trimTransactionsForState(updatedTransactions);
1452
+ onIncomingTransactions(transactions) {
1453
+ if (!transactions.length) {
1454
+ return;
1455
+ }
1456
+ const finalTransactions = transactions.map((tx) => {
1457
+ const { chainId } = tx;
1458
+ const networkClientId = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNetworkClientId).call(this, { chainId });
1459
+ return {
1460
+ ...tx,
1461
+ networkClientId,
1462
+ };
1437
1463
  });
1438
- }
1439
- onUpdatedLastFetchedBlockNumbers({ lastFetchedBlockNumbers, blockNumber, }) {
1440
1464
  this.update((state) => {
1441
- state.lastFetchedBlockNumbers = lastFetchedBlockNumbers;
1465
+ const { transactions: currentTransactions } = state;
1466
+ state.transactions = this.trimTransactionsForState([
1467
+ ...finalTransactions,
1468
+ ...currentTransactions,
1469
+ ]);
1470
+ (0, logger_1.projectLogger)('Added incoming transactions to state', finalTransactions.length, finalTransactions);
1442
1471
  });
1443
- this.messagingSystem.publish(`${controllerName}:incomingTransactionBlockReceived`, blockNumber);
1472
+ this.messagingSystem.publish(`${controllerName}:incomingTransactionsReceived`, finalTransactions);
1444
1473
  }
1445
1474
  generateDappSuggestedGasFees(txParams, origin) {
1446
1475
  if (!origin || origin === controller_utils_1.ORIGIN_METAMASK) {
@@ -1687,7 +1716,7 @@ class TransactionController extends base_controller_1.BaseController {
1687
1716
  }
1688
1717
  }
1689
1718
  exports.TransactionController = TransactionController;
1690
- _TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1719
+ _TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionChainIds = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1691
1720
  // If transaction is found for same action id, do not create a new transaction.
1692
1721
  if (this.getTransactionWithActionId(actionId)) {
1693
1722
  return;
@@ -1779,26 +1808,6 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1779
1808
  getPendingTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNonceTrackerPendingTransactions).bind(this, chainId),
1780
1809
  getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, types_1.TransactionStatus.confirmed, chainId),
1781
1810
  });
1782
- }, _TransactionController_createRemoteTransactionSource = function _TransactionController_createRemoteTransactionSource() {
1783
- return new EtherscanRemoteTransactionSource_1.EtherscanRemoteTransactionSource({
1784
- apiKeysByChainId: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").etherscanApiKeysByChainId,
1785
- includeTokenTransfers: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").includeTokenTransfers,
1786
- });
1787
- }, _TransactionController_createIncomingTransactionHelper = function _TransactionController_createIncomingTransactionHelper({ blockTracker, remoteTransactionSource, chainId, }) {
1788
- const incomingTransactionHelper = new IncomingTransactionHelper_1.IncomingTransactionHelper({
1789
- blockTracker,
1790
- getCurrentAccount: () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getSelectedAccount).call(this),
1791
- getLastFetchedBlockNumbers: () => this.state.lastFetchedBlockNumbers,
1792
- getLocalTransactions: () => this.state.transactions,
1793
- getChainId: () => chainId,
1794
- isEnabled: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").isEnabled,
1795
- queryEntireHistory: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").queryEntireHistory,
1796
- remoteTransactionSource,
1797
- transactionLimit: __classPrivateFieldGet(this, _TransactionController_transactionHistoryLimit, "f"),
1798
- updateTransactions: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").updateTransactions,
1799
- });
1800
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addIncomingTransactionHelperListeners).call(this, incomingTransactionHelper);
1801
- return incomingTransactionHelper;
1802
1811
  }, _TransactionController_createPendingTransactionTracker = function _TransactionController_createPendingTransactionTracker({ provider, blockTracker, chainId, }) {
1803
1812
  const ethQuery = new eth_query_1.default(provider);
1804
1813
  const pendingTransactionTracker = new PendingTransactionTracker_1.PendingTransactionTracker({
@@ -1824,10 +1833,9 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1824
1833
  __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopAllTracking();
1825
1834
  }, _TransactionController_removeIncomingTransactionHelperListeners = function _TransactionController_removeIncomingTransactionHelperListeners(incomingTransactionHelper) {
1826
1835
  incomingTransactionHelper.hub.removeAllListeners('transactions');
1827
- incomingTransactionHelper.hub.removeAllListeners('updatedLastFetchedBlockNumbers');
1836
+ incomingTransactionHelper.hub.removeAllListeners('updated-last-fetched-timestamp');
1828
1837
  }, _TransactionController_addIncomingTransactionHelperListeners = function _TransactionController_addIncomingTransactionHelperListeners(incomingTransactionHelper) {
1829
1838
  incomingTransactionHelper.hub.on('transactions', this.onIncomingTransactions.bind(this));
1830
- incomingTransactionHelper.hub.on('updatedLastFetchedBlockNumbers', this.onUpdatedLastFetchedBlockNumbers.bind(this));
1831
1839
  }, _TransactionController_removePendingTransactionTrackerListeners = function _TransactionController_removePendingTransactionTrackerListeners(pendingTransactionTracker) {
1832
1840
  pendingTransactionTracker.hub.removeAllListeners('transaction-confirmed');
1833
1841
  pendingTransactionTracker.hub.removeAllListeners('transaction-dropped');