@metamask-previews/transaction-controller 52.2.0-preview-b881bfc9 → 52.3.0-preview-8365901

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 CHANGED
@@ -7,15 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [52.3.0]
11
+
10
12
  ### Added
11
13
 
12
14
  - Adds `RandomisedEstimationsGasFeeFlow` to gas fee flows in `TransactionController` ([#5511](https://github.com/MetaMask/core/pull/5511))
13
15
  - Added flow only will be activated if chainId is defined in feature flags.
16
+ - Configure pending transaction polling intervals using remote feature flags ([#5549](https://github.com/MetaMask/core/pull/5549))
14
17
 
15
18
  ### Fixed
16
19
 
17
20
  - Fix EIP-7702 contract signature validation on chains with odd-length hexadecimal ID ([#5563](https://github.com/MetaMask/core/pull/5563))
18
21
  - Fix simulation of type-4 transactions ([#5552](https://github.com/MetaMask/core/pull/5552))
22
+ - Display incoming transactions in active tab ([#5487](https://github.com/MetaMask/core/pull/5487))
23
+ - Fix bug in `updateTransactionGasFees` affecting `txParams` gas updates when `enableTxParamsGasFeeUpdates` is enabled. ([#5539](https://github.com/MetaMask/core/pull/5539))
19
24
 
20
25
  ## [52.2.0]
21
26
 
@@ -1453,7 +1458,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1453
1458
 
1454
1459
  All changes listed after this point were applied to this package following the monorepo conversion.
1455
1460
 
1456
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.2.0...HEAD
1461
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.3.0...HEAD
1462
+ [52.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.2.0...@metamask/transaction-controller@52.3.0
1457
1463
  [52.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.1.0...@metamask/transaction-controller@52.2.0
1458
1464
  [52.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.0.0...@metamask/transaction-controller@52.1.0
1459
1465
  [52.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@51.0.0...@metamask/transaction-controller@52.0.0
@@ -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_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publishBatchHook, _TransactionController_publicKeyEIP7702, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_rejectTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow;
16
+ var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publishBatchHook, _TransactionController_publicKeyEIP7702, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_rejectTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = void 0;
19
19
  const base_controller_1 = require("@metamask/base-controller");
@@ -215,10 +215,9 @@ class TransactionController extends base_controller_1.BaseController {
215
215
  __classPrivateFieldSet(this, _TransactionController_trace, trace ?? ((_request, fn) => fn?.()), "f");
216
216
  this.afterSign = hooks?.afterSign ?? (() => true);
217
217
  this.beforeCheckPendingTransaction =
218
- hooks?.beforeCheckPendingTransaction ??
219
- /* istanbul ignore next */
220
- (() => true);
221
- this.beforePublish = hooks?.beforePublish ?? (() => true);
218
+ /* istanbul ignore next */
219
+ hooks?.beforeCheckPendingTransaction ?? (() => Promise.resolve(true));
220
+ this.beforePublish = hooks?.beforePublish ?? (() => Promise.resolve(true));
222
221
  this.getAdditionalSignArguments =
223
222
  hooks?.getAdditionalSignArguments ?? (() => []);
224
223
  this.publish =
@@ -294,6 +293,7 @@ class TransactionController extends base_controller_1.BaseController {
294
293
  });
295
294
  this.onBootCleanup();
296
295
  __classPrivateFieldGet(this, _TransactionController_checkForPendingTransactionAndStartPolling, "f").call(this);
296
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_registerActionHandlers).call(this);
297
297
  }
298
298
  /**
299
299
  * Stops polling and removes listeners to prepare the controller for garbage collection.
@@ -682,6 +682,7 @@ class TransactionController extends base_controller_1.BaseController {
682
682
  this.onTransactionStatusChange(updatedTransactionMeta);
683
683
  // Intentional given potential duration of process.
684
684
  this.updatePostBalance(updatedTransactionMeta).catch((error) => {
685
+ /* istanbul ignore next */
685
686
  (0, logger_1.projectLogger)('Error while updating post balance', error);
686
687
  throw error;
687
688
  });
@@ -930,20 +931,16 @@ class TransactionController extends base_controller_1.BaseController {
930
931
  /**
931
932
  * Update a custodial transaction.
932
933
  *
933
- * @param transactionId - The ID of the transaction to update.
934
- * @param options - The custodial transaction options to update.
935
- * @param options.errorMessage - The error message to be assigned in case transaction status update to failed.
936
- * @param options.hash - The new hash value to be assigned.
937
- * @param options.status - The new status value to be assigned.
934
+ * @param request - The custodial transaction update request.
935
+ *
936
+ * @returns The updated transaction metadata.
938
937
  */
939
- updateCustodialTransaction(transactionId, { errorMessage, hash, status, }) {
938
+ updateCustodialTransaction(request) {
939
+ const { transactionId, errorMessage, hash, status, gasLimit, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, type, } = request;
940
940
  const transactionMeta = this.getTransaction(transactionId);
941
941
  if (!transactionMeta) {
942
942
  throw new Error(`Cannot update custodial transaction as no transaction metadata found`);
943
943
  }
944
- if (!transactionMeta.custodyId) {
945
- throw new Error('Transaction must be a custodian transaction');
946
- }
947
944
  if (status &&
948
945
  ![
949
946
  types_1.TransactionStatus.submitted,
@@ -959,11 +956,27 @@ class TransactionController extends base_controller_1.BaseController {
959
956
  if (updatedTransactionMeta.status === types_1.TransactionStatus.failed) {
960
957
  updatedTransactionMeta.error = (0, utils_2.normalizeTxError)(new Error(errorMessage));
961
958
  }
959
+ // Update txParams properties with a single pickBy operation
960
+ updatedTransactionMeta.txParams = (0, lodash_1.merge)({}, updatedTransactionMeta.txParams, (0, lodash_1.pickBy)({
961
+ gasLimit,
962
+ gasPrice,
963
+ maxFeePerGas,
964
+ maxPriorityFeePerGas,
965
+ nonce,
966
+ type,
967
+ }));
968
+ // Special case for type change to legacy
969
+ if (type === types_1.TransactionEnvelopeType.legacy) {
970
+ delete updatedTransactionMeta.txParams.maxFeePerGas;
971
+ delete updatedTransactionMeta.txParams.maxPriorityFeePerGas;
972
+ }
962
973
  this.updateTransaction(updatedTransactionMeta, `${controllerName}:updateCustodialTransaction - Custodial transaction updated`);
963
- if ([types_1.TransactionStatus.submitted, types_1.TransactionStatus.failed].includes(status)) {
974
+ if (status &&
975
+ [types_1.TransactionStatus.submitted, types_1.TransactionStatus.failed].includes(status)) {
964
976
  this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
965
977
  __classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${updatedTransactionMeta.id}:finished`, updatedTransactionMeta);
966
978
  }
979
+ return updatedTransactionMeta;
967
980
  }
968
981
  /**
969
982
  * Search transaction metadata for matching entries.
@@ -1380,7 +1393,7 @@ class TransactionController extends base_controller_1.BaseController {
1380
1393
  });
1381
1394
  this.onTransactionStatusChange(transactionMeta);
1382
1395
  const rawTx = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Sign', parentContext: traceContext }, () => this.signTransaction(transactionMeta));
1383
- if (!this.beforePublish(transactionMeta)) {
1396
+ if (!(await this.beforePublish(transactionMeta))) {
1384
1397
  (0, logger_1.projectLogger)('Skipping publishing transaction based on hook');
1385
1398
  this.messagingSystem.publish(`${controllerName}:transactionPublishingSkipped`, transactionMeta);
1386
1399
  return ApprovalState.SkippedViaBeforePublishHook;
@@ -1966,7 +1979,6 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1966
1979
  }),
1967
1980
  hooks: {
1968
1981
  beforeCheckPendingTransaction: this.beforeCheckPendingTransaction.bind(this),
1969
- beforePublish: this.beforePublish.bind(this),
1970
1982
  },
1971
1983
  });
1972
1984
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addPendingTransactionTrackerListeners).call(this, pendingTransactionTracker);
@@ -2184,6 +2196,8 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2184
2196
  isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
2185
2197
  txMeta: transactionMeta,
2186
2198
  });
2199
+ }, _TransactionController_registerActionHandlers = function _TransactionController_registerActionHandlers() {
2200
+ this.messagingSystem.registerActionHandler(`${controllerName}:updateCustodialTransaction`, this.updateCustodialTransaction.bind(this));
2187
2201
  }, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
2188
2202
  this.update((state) => {
2189
2203
  const transactions = state.transactions.filter(({ id }) => id !== transactionId);