@metamask/transaction-controller 48.2.0 → 50.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.
- package/CHANGELOG.md +45 -1
- package/dist/TransactionController.cjs +67 -48
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +5 -8
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +5 -8
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +68 -49
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs +5 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +36 -13
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +36 -13
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +5 -0
- package/dist/types.mjs.map +1 -1
- package/dist/utils/batch.cjs +47 -9
- package/dist/utils/batch.cjs.map +1 -1
- package/dist/utils/batch.d.cts +4 -2
- package/dist/utils/batch.d.cts.map +1 -1
- package/dist/utils/batch.d.mts +4 -2
- package/dist/utils/batch.d.mts.map +1 -1
- package/dist/utils/batch.mjs +49 -11
- package/dist/utils/batch.mjs.map +1 -1
- package/dist/utils/eip7702.cjs +21 -9
- package/dist/utils/eip7702.cjs.map +1 -1
- package/dist/utils/eip7702.d.cts +10 -1
- package/dist/utils/eip7702.d.cts.map +1 -1
- package/dist/utils/eip7702.d.mts +10 -1
- package/dist/utils/eip7702.d.mts.map +1 -1
- package/dist/utils/eip7702.mjs +19 -8
- package/dist/utils/eip7702.mjs.map +1 -1
- package/dist/utils/feature-flags.cjs +26 -5
- package/dist/utils/feature-flags.cjs.map +1 -1
- package/dist/utils/feature-flags.d.cts +27 -7
- package/dist/utils/feature-flags.d.cts.map +1 -1
- package/dist/utils/feature-flags.d.mts +27 -7
- package/dist/utils/feature-flags.d.mts.map +1 -1
- package/dist/utils/feature-flags.mjs +24 -4
- package/dist/utils/feature-flags.mjs.map +1 -1
- package/dist/utils/signature.cjs +26 -0
- package/dist/utils/signature.cjs.map +1 -0
- package/dist/utils/signature.d.cts +11 -0
- package/dist/utils/signature.d.cts.map +1 -0
- package/dist/utils/signature.d.mts +11 -0
- package/dist/utils/signature.d.mts.map +1 -0
- package/dist/utils/signature.mjs +22 -0
- package/dist/utils/signature.mjs.map +1 -0
- package/dist/utils/validation.cjs +5 -1
- package/dist/utils/validation.cjs.map +1 -1
- package/dist/utils/validation.d.cts +3 -1
- package/dist/utils/validation.d.cts.map +1 -1
- package/dist/utils/validation.d.mts +3 -1
- package/dist/utils/validation.d.mts.map +1 -1
- package/dist/utils/validation.mjs +5 -1
- package/dist/utils/validation.mjs.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,48 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [50.0.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Add additional metadata for batch metrics ([#5488](https://github.com/MetaMask/core/pull/5488))
|
|
15
|
+
- Add `delegationAddress` to `TransactionMetadata`.
|
|
16
|
+
- Add `NestedTransactionMetadata` type containing `BatchTransactionParams` and `type`.
|
|
17
|
+
- Add optional `type` to `TransactionBatchSingleRequest`.
|
|
18
|
+
- Verify EIP-7702 contract address using signatures ([#5472](https://github.com/MetaMask/core/pull/5472))
|
|
19
|
+
- Add optional `publicKeyEIP7702` property to constructor.
|
|
20
|
+
- Add dependency on `^5.7.0` of `@ethersproject/wallet`.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **BREAKING:** Bump `@metamask/accounts-controller` peer dependency to `^26.1.0` ([#5481](https://github.com/MetaMask/core/pull/5481))
|
|
25
|
+
- **BREAKING:** Add additional metadata for batch metrics ([#5488](https://github.com/MetaMask/core/pull/5488))
|
|
26
|
+
- Change `error` in `TransactionMetadata` to optional for all statuses.
|
|
27
|
+
- Change `nestedTransactions` in `TransactionMetadata` to array of `NestedTransactionMetadata`.
|
|
28
|
+
- Throw if `addTransactionBatch` called with external origin and size limit exceeded ([#5489](https://github.com/MetaMask/core/pull/5489))
|
|
29
|
+
- Verify EIP-7702 contract address using signatures ([#5472](https://github.com/MetaMask/core/pull/5472))
|
|
30
|
+
- Use new `contracts` property from feature flags instead of `contractAddresses`.
|
|
31
|
+
|
|
32
|
+
## [49.0.0]
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
- Add `revertDelegation` to `TransactionType` ([#5468](https://github.com/MetaMask/core/pull/5468))
|
|
37
|
+
- Add optional batch ID to metadata ([#5462](https://github.com/MetaMask/core/pull/5462))
|
|
38
|
+
- Add optional `batchId` property to `TransactionMeta`.
|
|
39
|
+
- Add optional `transactionHash` to `TransactionReceipt`.
|
|
40
|
+
- Add optional `data` to `Log`.
|
|
41
|
+
- Add optional `batchId` to `TransactionBatchRequest`.
|
|
42
|
+
- Add optional `batchId` to `addTransaction` options.
|
|
43
|
+
- Throw if `batchId` already exists on a transaction.
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
|
|
47
|
+
- **BREAKING:** Add optional batch ID to metadata ([#5462](https://github.com/MetaMask/core/pull/5462))
|
|
48
|
+
- Change `batchId` in `TransactionBatchResult` to `Hex`.
|
|
49
|
+
- Return `batchId` from `addTransactionBatch` if provided.
|
|
50
|
+
- Generate random batch ID if no `batchId` provided.
|
|
51
|
+
|
|
10
52
|
## [48.2.0]
|
|
11
53
|
|
|
12
54
|
### Changed
|
|
@@ -1338,7 +1380,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1338
1380
|
|
|
1339
1381
|
All changes listed after this point were applied to this package following the monorepo conversion.
|
|
1340
1382
|
|
|
1341
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@
|
|
1383
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@50.0.0...HEAD
|
|
1384
|
+
[50.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@49.0.0...@metamask/transaction-controller@50.0.0
|
|
1385
|
+
[49.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.2.0...@metamask/transaction-controller@49.0.0
|
|
1342
1386
|
[48.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.1.0...@metamask/transaction-controller@48.2.0
|
|
1343
1387
|
[48.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.0.0...@metamask/transaction-controller@48.1.0
|
|
1344
1388
|
[48.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@47.0.0...@metamask/transaction-controller@48.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_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_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;
|
|
16
|
+
var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _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;
|
|
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");
|
|
@@ -156,7 +156,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
156
156
|
* @param options - The controller options.
|
|
157
157
|
*/
|
|
158
158
|
constructor(options) {
|
|
159
|
-
const { disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, } = options;
|
|
159
|
+
const { disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, publicKeyEIP7702, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, } = options;
|
|
160
160
|
super({
|
|
161
161
|
name: controllerName,
|
|
162
162
|
metadata,
|
|
@@ -175,6 +175,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
175
175
|
_TransactionController_incomingTransactionHelper.set(this, void 0);
|
|
176
176
|
_TransactionController_incomingTransactionOptions.set(this, void 0);
|
|
177
177
|
_TransactionController_pendingTransactionOptions.set(this, void 0);
|
|
178
|
+
_TransactionController_publicKeyEIP7702.set(this, void 0);
|
|
178
179
|
this.signAbortCallbacks = new Map();
|
|
179
180
|
_TransactionController_trace.set(this, void 0);
|
|
180
181
|
_TransactionController_transactionHistoryLimit.set(this, void 0);
|
|
@@ -205,6 +206,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
205
206
|
this.securityProviderRequest = securityProviderRequest;
|
|
206
207
|
__classPrivateFieldSet(this, _TransactionController_incomingTransactionOptions, incomingTransactions, "f");
|
|
207
208
|
__classPrivateFieldSet(this, _TransactionController_pendingTransactionOptions, pendingTransactions, "f");
|
|
209
|
+
__classPrivateFieldSet(this, _TransactionController_publicKeyEIP7702, publicKeyEIP7702, "f");
|
|
208
210
|
__classPrivateFieldSet(this, _TransactionController_transactionHistoryLimit, transactionHistoryLimit, "f");
|
|
209
211
|
this.sign = sign;
|
|
210
212
|
__classPrivateFieldSet(this, _TransactionController_testGasFeeFlows, testGasFeeFlows === true, "f");
|
|
@@ -320,6 +322,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
320
322
|
getEthQuery: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { networkClientId }),
|
|
321
323
|
getInternalAccounts: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getInternalAccounts).bind(this),
|
|
322
324
|
messenger: this.messagingSystem,
|
|
325
|
+
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
323
326
|
request,
|
|
324
327
|
});
|
|
325
328
|
}
|
|
@@ -334,6 +337,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
334
337
|
address,
|
|
335
338
|
getEthQuery: (chainId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { chainId }),
|
|
336
339
|
messenger: this.messagingSystem,
|
|
340
|
+
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
337
341
|
});
|
|
338
342
|
}
|
|
339
343
|
/**
|
|
@@ -344,6 +348,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
344
348
|
* @param txParams - Standard parameters for an Ethereum transaction.
|
|
345
349
|
* @param options - Additional options to control how the transaction is added.
|
|
346
350
|
* @param options.actionId - Unique ID to prevent duplicate requests.
|
|
351
|
+
* @param options.batchId - A custom ID for the batch this transaction belongs to.
|
|
347
352
|
* @param options.deviceConfirmedOn - An enum to indicate what device confirmed the transaction.
|
|
348
353
|
* @param options.method - RPC method that requested the transaction.
|
|
349
354
|
* @param options.nestedTransactions - Params for any nested transactions encoded in the data.
|
|
@@ -361,11 +366,15 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
361
366
|
*/
|
|
362
367
|
async addTransaction(txParams, options) {
|
|
363
368
|
(0, logger_1.projectLogger)('Adding transaction', txParams, options);
|
|
364
|
-
const { actionId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
|
|
369
|
+
const { actionId, batchId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
|
|
365
370
|
txParams = (0, utils_2.normalizeTransactionParams)(txParams);
|
|
366
371
|
if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
|
|
367
372
|
throw new Error(`Network client not found - ${networkClientId}`);
|
|
368
373
|
}
|
|
374
|
+
const chainId = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId);
|
|
375
|
+
const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
|
|
376
|
+
networkClientId,
|
|
377
|
+
});
|
|
369
378
|
const permittedAddresses = origin === undefined
|
|
370
379
|
? undefined
|
|
371
380
|
: await this.getPermittedAccounts?.(origin);
|
|
@@ -381,14 +390,17 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
381
390
|
txParams,
|
|
382
391
|
type,
|
|
383
392
|
});
|
|
393
|
+
const delegationAddressPromise = (0, eip7702_1.getDelegationAddress)(txParams.from, ethQuery).catch(() => undefined);
|
|
384
394
|
const isEIP1559Compatible = await this.getEIP1559Compatibility(networkClientId);
|
|
385
395
|
(0, validation_1.validateTxParams)(txParams, isEIP1559Compatible);
|
|
396
|
+
const isDuplicateBatchId = batchId?.length &&
|
|
397
|
+
this.state.transactions.some((tx) => tx.batchId?.toLowerCase() === batchId?.toLowerCase());
|
|
398
|
+
if (isDuplicateBatchId) {
|
|
399
|
+
throw rpc_errors_1.rpcErrors.invalidInput('Batch ID already exists');
|
|
400
|
+
}
|
|
386
401
|
const dappSuggestedGasFees = this.generateDappSuggestedGasFees(txParams, origin);
|
|
387
|
-
const chainId = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId);
|
|
388
|
-
const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
|
|
389
|
-
networkClientId,
|
|
390
|
-
});
|
|
391
402
|
const transactionType = type ?? (await (0, transaction_type_1.determineTransactionType)(txParams, ethQuery)).type;
|
|
403
|
+
const delegationAddress = await delegationAddressPromise;
|
|
392
404
|
const existingTransactionMeta = this.getTransactionWithActionId(actionId);
|
|
393
405
|
// If a request to add a transaction with the same actionId is submitted again, a new transaction will not be created for it.
|
|
394
406
|
let addedTransactionMeta = existingTransactionMeta
|
|
@@ -396,8 +408,10 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
396
408
|
: {
|
|
397
409
|
// Add actionId to txMeta to check if same actionId is seen again
|
|
398
410
|
actionId,
|
|
411
|
+
batchId,
|
|
399
412
|
chainId,
|
|
400
413
|
dappSuggestedGasFees,
|
|
414
|
+
delegationAddress,
|
|
401
415
|
deviceConfirmedOn,
|
|
402
416
|
id: (0, uuid_1.v1)(),
|
|
403
417
|
isFirstTimeInteraction: undefined,
|
|
@@ -432,7 +446,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
432
446
|
}
|
|
433
447
|
addedTransactionMeta = (0, swaps_1.updateSwapsTransaction)(addedTransactionMeta, transactionType, swaps, {
|
|
434
448
|
isSwapsDisabled: this.isSwapsDisabled,
|
|
435
|
-
cancelTransaction: this.
|
|
449
|
+
cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
|
|
436
450
|
messenger: this.messagingSystem,
|
|
437
451
|
});
|
|
438
452
|
this.addMetadata(addedTransactionMeta);
|
|
@@ -1232,18 +1246,13 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1232
1246
|
actionId,
|
|
1233
1247
|
});
|
|
1234
1248
|
}
|
|
1235
|
-
// TODO: Replace `any` with type
|
|
1236
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1237
1249
|
}
|
|
1238
|
-
catch (
|
|
1250
|
+
catch (rawError) {
|
|
1251
|
+
const error = rawError;
|
|
1239
1252
|
const { isCompleted: isTxCompleted } = this.isTransactionCompleted(transactionId);
|
|
1240
1253
|
if (!isTxCompleted) {
|
|
1241
|
-
if (
|
|
1242
|
-
this.
|
|
1243
|
-
throw rpc_errors_1.providerErrors.userRejectedRequest({
|
|
1244
|
-
message: 'MetaMask Tx Signature: User denied transaction signature.',
|
|
1245
|
-
data: error?.data,
|
|
1246
|
-
});
|
|
1254
|
+
if (__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_isRejectError).call(this, error)) {
|
|
1255
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransactionAndThrow).call(this, transactionId, actionId, error);
|
|
1247
1256
|
}
|
|
1248
1257
|
else {
|
|
1249
1258
|
this.failTransaction(meta, error, actionId);
|
|
@@ -1254,8 +1263,9 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1254
1263
|
const finalMeta = await finishedPromise;
|
|
1255
1264
|
switch (finalMeta?.status) {
|
|
1256
1265
|
case types_1.TransactionStatus.failed:
|
|
1257
|
-
|
|
1258
|
-
|
|
1266
|
+
const error = finalMeta.error;
|
|
1267
|
+
resultCallbacks?.error(error);
|
|
1268
|
+
throw rpc_errors_1.rpcErrors.internal(error.message);
|
|
1259
1269
|
case types_1.TransactionStatus.submitted:
|
|
1260
1270
|
resultCallbacks?.success();
|
|
1261
1271
|
return finalMeta.hash;
|
|
@@ -1382,34 +1392,6 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1382
1392
|
}
|
|
1383
1393
|
return transactionHash;
|
|
1384
1394
|
}
|
|
1385
|
-
/**
|
|
1386
|
-
* Cancels a transaction based on its ID by setting its status to "rejected"
|
|
1387
|
-
* and emitting a `<tx.id>:finished` hub event.
|
|
1388
|
-
*
|
|
1389
|
-
* @param transactionId - The ID of the transaction to cancel.
|
|
1390
|
-
* @param actionId - The actionId passed from UI
|
|
1391
|
-
*/
|
|
1392
|
-
cancelTransaction(transactionId, actionId) {
|
|
1393
|
-
const transactionMeta = this.state.transactions.find(({ id }) => id === transactionId);
|
|
1394
|
-
if (!transactionMeta) {
|
|
1395
|
-
return;
|
|
1396
|
-
}
|
|
1397
|
-
this.update((state) => {
|
|
1398
|
-
const transactions = state.transactions.filter(({ id }) => id !== transactionId);
|
|
1399
|
-
state.transactions = this.trimTransactionsForState(transactions);
|
|
1400
|
-
});
|
|
1401
|
-
const updatedTransactionMeta = {
|
|
1402
|
-
...transactionMeta,
|
|
1403
|
-
status: types_1.TransactionStatus.rejected,
|
|
1404
|
-
};
|
|
1405
|
-
this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1406
|
-
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1407
|
-
this.messagingSystem.publish(`${controllerName}:transactionRejected`, {
|
|
1408
|
-
transactionMeta: updatedTransactionMeta,
|
|
1409
|
-
actionId,
|
|
1410
|
-
});
|
|
1411
|
-
this.onTransactionStatusChange(updatedTransactionMeta);
|
|
1412
|
-
}
|
|
1413
1395
|
/**
|
|
1414
1396
|
* Trim the amount of transactions that are set on the state. Checks
|
|
1415
1397
|
* if the length of the tx history is longer then desired persistence
|
|
@@ -1787,7 +1769,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1787
1769
|
}
|
|
1788
1770
|
}
|
|
1789
1771
|
exports.TransactionController = TransactionController;
|
|
1790
|
-
_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, }) {
|
|
1772
|
+
_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_publicKeyEIP7702 = 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, }) {
|
|
1791
1773
|
// If transaction is found for same action id, do not create a new transaction.
|
|
1792
1774
|
if (this.getTransactionWithActionId(actionId)) {
|
|
1793
1775
|
return;
|
|
@@ -1852,6 +1834,24 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
1852
1834
|
actionId,
|
|
1853
1835
|
});
|
|
1854
1836
|
afterSubmit?.(newTransactionMeta);
|
|
1837
|
+
}, _TransactionController_rejectTransaction = function _TransactionController_rejectTransaction(transactionId, actionId, error) {
|
|
1838
|
+
const transactionMeta = this.getTransaction(transactionId);
|
|
1839
|
+
if (!transactionMeta) {
|
|
1840
|
+
return;
|
|
1841
|
+
}
|
|
1842
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_deleteTransaction).call(this, transactionId);
|
|
1843
|
+
const updatedTransactionMeta = {
|
|
1844
|
+
...transactionMeta,
|
|
1845
|
+
status: types_1.TransactionStatus.rejected,
|
|
1846
|
+
error: (0, utils_2.normalizeTxError)(error ?? rpc_errors_1.providerErrors.userRejectedRequest()),
|
|
1847
|
+
};
|
|
1848
|
+
this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1849
|
+
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1850
|
+
this.messagingSystem.publish(`${controllerName}:transactionRejected`, {
|
|
1851
|
+
transactionMeta: updatedTransactionMeta,
|
|
1852
|
+
actionId,
|
|
1853
|
+
});
|
|
1854
|
+
this.onTransactionStatusChange(updatedTransactionMeta);
|
|
1855
1855
|
}, _TransactionController_getChainId = function _TransactionController_getChainId(networkClientId) {
|
|
1856
1856
|
return __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").getNetworkClient({ networkClientId })
|
|
1857
1857
|
.configuration.chainId;
|
|
@@ -2099,5 +2099,24 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
|
|
|
2099
2099
|
isCustomNetwork,
|
|
2100
2100
|
txMeta: transactionMeta,
|
|
2101
2101
|
});
|
|
2102
|
+
}, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
|
|
2103
|
+
this.update((state) => {
|
|
2104
|
+
const transactions = state.transactions.filter(({ id }) => id !== transactionId);
|
|
2105
|
+
state.transactions = this.trimTransactionsForState(transactions);
|
|
2106
|
+
});
|
|
2107
|
+
}, _TransactionController_isRejectError = function _TransactionController_isRejectError(error) {
|
|
2108
|
+
return [
|
|
2109
|
+
rpc_errors_1.errorCodes.provider.userRejectedRequest,
|
|
2110
|
+
rpc_errors_1.errorCodes.rpc.methodNotSupported,
|
|
2111
|
+
].includes(error.code);
|
|
2112
|
+
}, _TransactionController_rejectTransactionAndThrow = function _TransactionController_rejectTransactionAndThrow(transactionId, actionId, error) {
|
|
2113
|
+
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).call(this, transactionId, actionId, error);
|
|
2114
|
+
if (error.code === rpc_errors_1.errorCodes.provider.userRejectedRequest) {
|
|
2115
|
+
throw rpc_errors_1.providerErrors.userRejectedRequest({
|
|
2116
|
+
message: 'MetaMask Tx Signature: User denied transaction signature.',
|
|
2117
|
+
data: error?.data,
|
|
2118
|
+
});
|
|
2119
|
+
}
|
|
2120
|
+
throw error;
|
|
2102
2121
|
};
|
|
2103
2122
|
//# sourceMappingURL=TransactionController.cjs.map
|