@metamask/transaction-controller 60.9.0 → 61.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 +31 -1
- package/dist/TransactionController.cjs +107 -61
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +34 -3
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +34 -3
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +107 -61
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.cjs +12 -2
- package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.mjs +12 -2
- package/dist/helpers/IncomingTransactionHelper.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/package.json +13 -12
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [61.0.0]
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6386](https://github.com/MetaMask/core/pull/6386))
|
|
15
|
+
- Previously, `TransactionController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`.
|
|
16
|
+
- **BREAKING:** Bump `@metamask/accounts-controller` from `^33.0.0` to `^34.0.0` ([#6962](https://github.com/MetaMask/core/pull/6962))
|
|
17
|
+
- **BREAKING:** Bump `@metamask/approval-controller` from `^7.0.0` to `^8.0.0` ([#6962](https://github.com/MetaMask/core/pull/6962))
|
|
18
|
+
- **BREAKING:** Bump `@metamask/gas-fee-controller` from `^24.0.0` to `^25.0.0` ([#6962](https://github.com/MetaMask/core/pull/6962))
|
|
19
|
+
- **BREAKING:** Bump `@metamask/network-controller` from `^24.0.0` to `^25.0.0` ([#6962](https://github.com/MetaMask/core/pull/6962))
|
|
20
|
+
- **BREAKING:** Bump `@metamask/remote-feature-flag-controller` from `^1.5.0` to `^2.0.0` ([#6962](https://github.com/MetaMask/core/pull/6962))
|
|
21
|
+
- Bump `@metamask/base-controller` from `^8.4.2` to `^9.0.0` ([#6962](https://github.com/MetaMask/core/pull/6962))
|
|
22
|
+
- Bump `@metamask/polling-controller` from `^14.0.2` to `^15.0.0` ( [#6962](https://github.com/MetaMask/core/pull/6962))
|
|
23
|
+
|
|
24
|
+
## [60.10.0]
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- Add actions `TransactionController:emulateNewTransaction` and `TransactionController:emulateTransactionUpdate` ([#6935](https://github.com/MetaMask/core/pull/6935))
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- Bump `@metamask/base-controller` from `^8.4.1` to `^8.4.2` ([#6917](https://github.com/MetaMask/core/pull/6917))
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- Prevent race condition causing excessive incoming transaction polling ([#6913](https://github.com/MetaMask/core/pull/6913))
|
|
37
|
+
|
|
10
38
|
## [60.9.0]
|
|
11
39
|
|
|
12
40
|
### Added
|
|
@@ -1877,7 +1905,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1877
1905
|
|
|
1878
1906
|
All changes listed after this point were applied to this package following the monorepo conversion.
|
|
1879
1907
|
|
|
1880
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@
|
|
1908
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@61.0.0...HEAD
|
|
1909
|
+
[61.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.10.0...@metamask/transaction-controller@61.0.0
|
|
1910
|
+
[60.10.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.9.0...@metamask/transaction-controller@60.10.0
|
|
1881
1911
|
[60.9.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.8.0...@metamask/transaction-controller@60.9.0
|
|
1882
1912
|
[60.8.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.7.0...@metamask/transaction-controller@60.8.0
|
|
1883
1913
|
[60.7.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@60.6.1...@metamask/transaction-controller@60.7.0
|
|
@@ -70,31 +70,31 @@ const metadata = {
|
|
|
70
70
|
transactions: {
|
|
71
71
|
includeInStateLogs: true,
|
|
72
72
|
persist: true,
|
|
73
|
-
|
|
73
|
+
includeInDebugSnapshot: false,
|
|
74
74
|
usedInUi: true,
|
|
75
75
|
},
|
|
76
76
|
transactionBatches: {
|
|
77
77
|
includeInStateLogs: true,
|
|
78
78
|
persist: true,
|
|
79
|
-
|
|
79
|
+
includeInDebugSnapshot: false,
|
|
80
80
|
usedInUi: true,
|
|
81
81
|
},
|
|
82
82
|
methodData: {
|
|
83
83
|
includeInStateLogs: true,
|
|
84
84
|
persist: true,
|
|
85
|
-
|
|
85
|
+
includeInDebugSnapshot: false,
|
|
86
86
|
usedInUi: true,
|
|
87
87
|
},
|
|
88
88
|
lastFetchedBlockNumbers: {
|
|
89
89
|
includeInStateLogs: true,
|
|
90
90
|
persist: true,
|
|
91
|
-
|
|
91
|
+
includeInDebugSnapshot: false,
|
|
92
92
|
usedInUi: false,
|
|
93
93
|
},
|
|
94
94
|
submitHistory: {
|
|
95
95
|
includeInStateLogs: true,
|
|
96
96
|
persist: true,
|
|
97
|
-
|
|
97
|
+
includeInDebugSnapshot: false,
|
|
98
98
|
usedInUi: false,
|
|
99
99
|
},
|
|
100
100
|
};
|
|
@@ -199,7 +199,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
199
199
|
_TransactionController_checkForPendingTransactionAndStartPolling.set(this, () => {
|
|
200
200
|
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").checkForPendingTransactionAndStartPolling();
|
|
201
201
|
});
|
|
202
|
-
this.
|
|
202
|
+
this.messenger = messenger;
|
|
203
203
|
__classPrivateFieldSet(this, _TransactionController_afterAdd, hooks?.afterAdd ?? (() => Promise.resolve({})), "f");
|
|
204
204
|
__classPrivateFieldSet(this, _TransactionController_afterSign, hooks?.afterSign ?? (() => true), "f");
|
|
205
205
|
__classPrivateFieldSet(this, _TransactionController_afterSimulate, hooks?.afterSimulate ?? (() => Promise.resolve({})), "f");
|
|
@@ -235,19 +235,19 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
235
235
|
__classPrivateFieldSet(this, _TransactionController_trace, trace ?? ((_request, fn) => fn?.()), "f");
|
|
236
236
|
__classPrivateFieldSet(this, _TransactionController_transactionHistoryLimit, transactionHistoryLimit, "f");
|
|
237
237
|
const findNetworkClientIdByChainId = (chainId) => {
|
|
238
|
-
return this.
|
|
238
|
+
return this.messenger.call(`NetworkController:findNetworkClientIdByChainId`, chainId);
|
|
239
239
|
};
|
|
240
240
|
__classPrivateFieldSet(this, _TransactionController_multichainTrackingHelper, new MultichainTrackingHelper_1.MultichainTrackingHelper({
|
|
241
241
|
findNetworkClientIdByChainId,
|
|
242
242
|
getNetworkClientById: ((networkClientId) => {
|
|
243
|
-
return this.
|
|
243
|
+
return this.messenger.call(`NetworkController:getNetworkClientById`, networkClientId);
|
|
244
244
|
}),
|
|
245
245
|
getNetworkClientRegistry,
|
|
246
246
|
removePendingTransactionTrackerListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removePendingTransactionTrackerListeners).bind(this),
|
|
247
247
|
createNonceTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createNonceTracker).bind(this),
|
|
248
248
|
createPendingTransactionTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).bind(this),
|
|
249
249
|
onNetworkStateChange: (listener) => {
|
|
250
|
-
this.
|
|
250
|
+
this.messenger.subscribe('NetworkController:stateChange', listener);
|
|
251
251
|
},
|
|
252
252
|
}), "f");
|
|
253
253
|
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").initialize();
|
|
@@ -261,9 +261,9 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
261
261
|
getTransactions: () => this.state.transactions,
|
|
262
262
|
getTransactionBatches: () => this.state.transactionBatches,
|
|
263
263
|
layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
|
|
264
|
-
messenger: this.
|
|
264
|
+
messenger: this.messenger,
|
|
265
265
|
onStateChange: (listener) => {
|
|
266
|
-
this.
|
|
266
|
+
this.messenger.subscribe('TransactionController:stateChange', listener);
|
|
267
267
|
},
|
|
268
268
|
});
|
|
269
269
|
gasFeePoller.hub.on('transaction-updated', __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onGasFeePollerTransactionUpdate).bind(this));
|
|
@@ -283,7 +283,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
283
283
|
getLocalTransactions: () => this.state.transactions,
|
|
284
284
|
includeTokenTransfers: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").includeTokenTransfers,
|
|
285
285
|
isEnabled: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").isEnabled,
|
|
286
|
-
messenger: this.
|
|
286
|
+
messenger: this.messenger,
|
|
287
287
|
remoteTransactionSource: new AccountsApiRemoteTransactionSource_1.AccountsApiRemoteTransactionSource(),
|
|
288
288
|
trimTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_trimTransactionsForState).bind(this),
|
|
289
289
|
updateTransactions: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").updateTransactions,
|
|
@@ -291,11 +291,11 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
291
291
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addIncomingTransactionHelperListeners).call(this, __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f"));
|
|
292
292
|
// when transactionsController state changes
|
|
293
293
|
// check for pending transactions and start polling if there are any
|
|
294
|
-
this.
|
|
294
|
+
this.messenger.subscribe('TransactionController:stateChange', __classPrivateFieldGet(this, _TransactionController_checkForPendingTransactionAndStartPolling, "f"));
|
|
295
295
|
new ResimulateHelper_1.ResimulateHelper({
|
|
296
296
|
simulateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateSimulationData).bind(this),
|
|
297
297
|
onTransactionsUpdate: (listener) => {
|
|
298
|
-
this.
|
|
298
|
+
this.messenger.subscribe('TransactionController:stateChange', listener, (controllerState) => controllerState.transactions);
|
|
299
299
|
},
|
|
300
300
|
getTransactions: () => this.state.transactions,
|
|
301
301
|
});
|
|
@@ -326,7 +326,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
326
326
|
* @returns Result object containing the generated batch ID.
|
|
327
327
|
*/
|
|
328
328
|
async addTransactionBatch(request) {
|
|
329
|
-
const { blockTracker } = this.
|
|
329
|
+
const { blockTracker } = this.messenger.call(`NetworkController:getNetworkClientById`, request.networkClientId);
|
|
330
330
|
return await (0, batch_1.addTransactionBatch)({
|
|
331
331
|
addTransaction: this.addTransaction.bind(this),
|
|
332
332
|
estimateGas: this.estimateGas.bind(this),
|
|
@@ -343,7 +343,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
343
343
|
}),
|
|
344
344
|
getTransaction: (transactionId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionOrThrow).call(this, transactionId),
|
|
345
345
|
isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f"),
|
|
346
|
-
messenger: this.
|
|
346
|
+
messenger: this.messenger,
|
|
347
347
|
publishBatchHook: __classPrivateFieldGet(this, _TransactionController_publishBatchHook, "f"),
|
|
348
348
|
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
349
349
|
publishTransaction: (ethQuery, transactionMeta) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_publishTransaction).call(this, ethQuery, transactionMeta),
|
|
@@ -363,7 +363,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
363
363
|
return (0, batch_1.isAtomicBatchSupported)({
|
|
364
364
|
...request,
|
|
365
365
|
getEthQuery: (chainId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { chainId }),
|
|
366
|
-
messenger: this.
|
|
366
|
+
messenger: this.messenger,
|
|
367
367
|
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
368
368
|
});
|
|
369
369
|
}
|
|
@@ -472,7 +472,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
472
472
|
addedTransactionMeta = (0, swaps_1.updateSwapsTransaction)(addedTransactionMeta, transactionType, swaps, {
|
|
473
473
|
isSwapsDisabled: __classPrivateFieldGet(this, _TransactionController_isSwapsDisabled, "f"),
|
|
474
474
|
cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
|
|
475
|
-
messenger: this.
|
|
475
|
+
messenger: this.messenger,
|
|
476
476
|
});
|
|
477
477
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addMetadata).call(this, addedTransactionMeta);
|
|
478
478
|
if (requireApproval !== false) {
|
|
@@ -497,7 +497,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
497
497
|
else {
|
|
498
498
|
(0, logger_1.projectLogger)('Skipping simulation & first interaction update as approval not required');
|
|
499
499
|
}
|
|
500
|
-
this.
|
|
500
|
+
this.messenger.publish(`${controllerName}:unapprovedTransactionAdded`, addedTransactionMeta);
|
|
501
501
|
}
|
|
502
502
|
return {
|
|
503
503
|
result: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_processApproval).call(this, addedTransactionMeta, {
|
|
@@ -550,7 +550,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
550
550
|
txParams.value = '0x0';
|
|
551
551
|
},
|
|
552
552
|
afterSubmit: (newTransactionMeta) => {
|
|
553
|
-
this.
|
|
553
|
+
this.messenger.publish(`${controllerName}:transactionFinished`, newTransactionMeta);
|
|
554
554
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${newTransactionMeta.id}:finished`, newTransactionMeta);
|
|
555
555
|
},
|
|
556
556
|
});
|
|
@@ -574,7 +574,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
574
574
|
transactionId,
|
|
575
575
|
transactionType: types_1.TransactionType.retry,
|
|
576
576
|
afterSubmit: (newTransactionMeta) => {
|
|
577
|
-
this.
|
|
577
|
+
this.messenger.publish(`${controllerName}:speedupTransactionAdded`, newTransactionMeta);
|
|
578
578
|
},
|
|
579
579
|
});
|
|
580
580
|
}
|
|
@@ -597,7 +597,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
597
597
|
ignoreDelegationSignatures,
|
|
598
598
|
isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
|
|
599
599
|
getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f"),
|
|
600
|
-
messenger: this.
|
|
600
|
+
messenger: this.messenger,
|
|
601
601
|
txParams: transaction,
|
|
602
602
|
});
|
|
603
603
|
return { gas: estimatedGas, simulationFails };
|
|
@@ -619,7 +619,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
619
619
|
ethQuery,
|
|
620
620
|
isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
|
|
621
621
|
getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f"),
|
|
622
|
-
messenger: this.
|
|
622
|
+
messenger: this.messenger,
|
|
623
623
|
txParams: transaction,
|
|
624
624
|
});
|
|
625
625
|
const gas = (0, gas_1.addGasBuffer)(estimatedGas, blockGasLimit, multiplier);
|
|
@@ -721,7 +721,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
721
721
|
(0, logger_1.projectLogger)('Error while updating post balance', error);
|
|
722
722
|
throw error;
|
|
723
723
|
});
|
|
724
|
-
this.
|
|
724
|
+
this.messenger.publish(`${controllerName}:transactionConfirmed`, updatedTransactionMeta);
|
|
725
725
|
}
|
|
726
726
|
catch (error) {
|
|
727
727
|
console.error('Failed to confirm external transaction', error);
|
|
@@ -918,7 +918,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
918
918
|
}
|
|
919
919
|
await (0, layer1_gas_fee_flow_1.updateTransactionLayer1GasFee)({
|
|
920
920
|
layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
|
|
921
|
-
messenger: this.
|
|
921
|
+
messenger: this.messenger,
|
|
922
922
|
provider,
|
|
923
923
|
transactionMeta: updatedTransaction,
|
|
924
924
|
});
|
|
@@ -1046,7 +1046,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1046
1046
|
this.updateTransaction(updatedTransactionMeta, `${controllerName}:updateCustodialTransaction - Custodial transaction updated`);
|
|
1047
1047
|
if (status &&
|
|
1048
1048
|
[types_1.TransactionStatus.submitted, types_1.TransactionStatus.failed].includes(status)) {
|
|
1049
|
-
this.
|
|
1049
|
+
this.messenger.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1050
1050
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${updatedTransactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1051
1051
|
}
|
|
1052
1052
|
return updatedTransactionMeta;
|
|
@@ -1143,7 +1143,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1143
1143
|
networkClientId,
|
|
1144
1144
|
};
|
|
1145
1145
|
// Guaranteed as the default gas fee flow matches all transactions.
|
|
1146
|
-
const gasFeeFlow = (0, gas_flow_1.getGasFeeFlow)(transactionMeta, __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"), this.
|
|
1146
|
+
const gasFeeFlow = (0, gas_flow_1.getGasFeeFlow)(transactionMeta, __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"), this.messenger);
|
|
1147
1147
|
const ethQuery = new eth_query_1.default(provider);
|
|
1148
1148
|
const gasFeeControllerData = await __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f").call(this, {
|
|
1149
1149
|
networkClientId,
|
|
@@ -1151,7 +1151,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1151
1151
|
return gasFeeFlow.getGasFees({
|
|
1152
1152
|
ethQuery,
|
|
1153
1153
|
gasFeeControllerData,
|
|
1154
|
-
messenger: this.
|
|
1154
|
+
messenger: this.messenger,
|
|
1155
1155
|
transactionMeta,
|
|
1156
1156
|
});
|
|
1157
1157
|
}
|
|
@@ -1171,7 +1171,7 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1171
1171
|
});
|
|
1172
1172
|
return await (0, layer1_gas_fee_flow_1.getTransactionLayer1GasFee)({
|
|
1173
1173
|
layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
|
|
1174
|
-
messenger: this.
|
|
1174
|
+
messenger: this.messenger,
|
|
1175
1175
|
provider,
|
|
1176
1176
|
transactionMeta: {
|
|
1177
1177
|
txParams: transactionParams,
|
|
@@ -1303,6 +1303,50 @@ class TransactionController extends base_controller_1.BaseController {
|
|
|
1303
1303
|
];
|
|
1304
1304
|
});
|
|
1305
1305
|
}
|
|
1306
|
+
/**
|
|
1307
|
+
* Emulate a new transaction.
|
|
1308
|
+
*
|
|
1309
|
+
* @param transactionId - The transaction ID.
|
|
1310
|
+
*/
|
|
1311
|
+
emulateNewTransaction(transactionId) {
|
|
1312
|
+
const transactionMeta = this.state.transactions.find((tx) => tx.id === transactionId);
|
|
1313
|
+
if (!transactionMeta) {
|
|
1314
|
+
return;
|
|
1315
|
+
}
|
|
1316
|
+
if (transactionMeta.type === types_1.TransactionType.swap) {
|
|
1317
|
+
this.messenger.publish('TransactionController:transactionNewSwap', {
|
|
1318
|
+
transactionMeta,
|
|
1319
|
+
});
|
|
1320
|
+
}
|
|
1321
|
+
else if (transactionMeta.type === types_1.TransactionType.swapApproval) {
|
|
1322
|
+
this.messenger.publish('TransactionController:transactionNewSwapApproval', { transactionMeta });
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
/**
|
|
1326
|
+
* Emulate a transaction update.
|
|
1327
|
+
*
|
|
1328
|
+
* @param transactionMeta - Transaction metadata.
|
|
1329
|
+
*/
|
|
1330
|
+
emulateTransactionUpdate(transactionMeta) {
|
|
1331
|
+
const updatedTransactionMeta = {
|
|
1332
|
+
...transactionMeta,
|
|
1333
|
+
txParams: {
|
|
1334
|
+
...transactionMeta.txParams,
|
|
1335
|
+
from: this.messenger.call('AccountsController:getSelectedAccount')
|
|
1336
|
+
.address,
|
|
1337
|
+
},
|
|
1338
|
+
};
|
|
1339
|
+
const transactionExists = this.state.transactions.some((tx) => tx.id === updatedTransactionMeta.id);
|
|
1340
|
+
if (!transactionExists) {
|
|
1341
|
+
this.update((state) => {
|
|
1342
|
+
state.transactions.push(updatedTransactionMeta);
|
|
1343
|
+
});
|
|
1344
|
+
}
|
|
1345
|
+
this.updateTransaction(updatedTransactionMeta, 'Generated from user operation');
|
|
1346
|
+
this.messenger.publish('TransactionController:transactionStatusUpdated', {
|
|
1347
|
+
transactionMeta: updatedTransactionMeta,
|
|
1348
|
+
});
|
|
1349
|
+
}
|
|
1306
1350
|
}
|
|
1307
1351
|
exports.TransactionController = TransactionController;
|
|
1308
1352
|
_TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSign = new WeakMap(), _TransactionController_afterSimulate = new WeakMap(), _TransactionController_approvingTransactionIds = new WeakMap(), _TransactionController_beforeCheckPendingTransaction = new WeakMap(), _TransactionController_beforePublish = new WeakMap(), _TransactionController_beforeSign = new WeakMap(), _TransactionController_gasFeeFlows = new WeakMap(), _TransactionController_getAdditionalSignArguments = new WeakMap(), _TransactionController_getCurrentAccountEIP1559Compatibility = new WeakMap(), _TransactionController_getCurrentNetworkEIP1559Compatibility = new WeakMap(), _TransactionController_getExternalPendingTransactions = new WeakMap(), _TransactionController_getGasFeeEstimates = new WeakMap(), _TransactionController_getNetworkState = new WeakMap(), _TransactionController_getPermittedAccounts = new WeakMap(), _TransactionController_getSavedGasFees = new WeakMap(), _TransactionController_getSimulationConfig = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_internalEvents = new WeakMap(), _TransactionController_isAutomaticGasFeeUpdateEnabled = new WeakMap(), _TransactionController_isEIP7702GasFeeTokensEnabled = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isHistoryDisabled = new WeakMap(), _TransactionController_isSendFlowHistoryDisabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_isSwapsDisabled = new WeakMap(), _TransactionController_layer1GasFeeFlows = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_publicKeyEIP7702 = new WeakMap(), _TransactionController_publish = new WeakMap(), _TransactionController_publishBatchHook = new WeakMap(), _TransactionController_securityProviderRequest = new WeakMap(), _TransactionController_sign = new WeakMap(), _TransactionController_signAbortCallbacks = new WeakMap(), _TransactionController_skipSimulationTransactionIds = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = 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, }) {
|
|
@@ -1361,11 +1405,11 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
|
|
|
1361
1405
|
newTransactionMeta.hash = hash;
|
|
1362
1406
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addMetadata).call(this, newTransactionMeta);
|
|
1363
1407
|
// speedUpTransaction has no approval request, so we assume the user has already approved the transaction
|
|
1364
|
-
this.
|
|
1408
|
+
this.messenger.publish(`${controllerName}:transactionApproved`, {
|
|
1365
1409
|
transactionMeta: newTransactionMeta,
|
|
1366
1410
|
actionId,
|
|
1367
1411
|
});
|
|
1368
|
-
this.
|
|
1412
|
+
this.messenger.publish(`${controllerName}:transactionSubmitted`, {
|
|
1369
1413
|
transactionMeta: newTransactionMeta,
|
|
1370
1414
|
actionId,
|
|
1371
1415
|
});
|
|
@@ -1412,12 +1456,12 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
|
|
|
1412
1456
|
gasFeeFlows: __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"),
|
|
1413
1457
|
getGasFeeEstimates: __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f"),
|
|
1414
1458
|
getSavedGasFees: __classPrivateFieldGet(this, _TransactionController_getSavedGasFees, "f").bind(this),
|
|
1415
|
-
messenger: this.
|
|
1459
|
+
messenger: this.messenger,
|
|
1416
1460
|
txMeta: transactionMeta,
|
|
1417
1461
|
}));
|
|
1418
1462
|
await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Update Layer 1 Gas Fees', parentContext: traceContext }, async () => await (0, layer1_gas_fee_flow_1.updateTransactionLayer1GasFee)({
|
|
1419
1463
|
layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
|
|
1420
|
-
messenger: this.
|
|
1464
|
+
messenger: this.messenger,
|
|
1421
1465
|
provider,
|
|
1422
1466
|
transactionMeta,
|
|
1423
1467
|
}));
|
|
@@ -1462,7 +1506,7 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
|
|
|
1462
1506
|
resultCallbacks.success();
|
|
1463
1507
|
}
|
|
1464
1508
|
const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
|
|
1465
|
-
this.
|
|
1509
|
+
this.messenger.publish(`${controllerName}:transactionApproved`, {
|
|
1466
1510
|
transactionMeta: updatedTransactionMeta,
|
|
1467
1511
|
actionId,
|
|
1468
1512
|
});
|
|
@@ -1550,7 +1594,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1550
1594
|
const rawTx = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Sign', parentContext: traceContext }, () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_signTransaction).call(this, transactionMeta));
|
|
1551
1595
|
if (!(await __classPrivateFieldGet(this, _TransactionController_beforePublish, "f").call(this, transactionMeta))) {
|
|
1552
1596
|
(0, logger_1.projectLogger)('Skipping publishing transaction based on hook');
|
|
1553
|
-
this.
|
|
1597
|
+
this.messenger.publish(`${controllerName}:transactionPublishingSkipped`, transactionMeta);
|
|
1554
1598
|
return ApprovalState.SkippedViaBeforePublishHook;
|
|
1555
1599
|
}
|
|
1556
1600
|
if (!rawTx && !transactionMeta.isExternalSign) {
|
|
@@ -1596,10 +1640,10 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1596
1640
|
(0, logger_1.projectLogger)('Updated pre-transaction balance', preTxBalance);
|
|
1597
1641
|
}
|
|
1598
1642
|
});
|
|
1599
|
-
this.
|
|
1643
|
+
this.messenger.publish(`${controllerName}:transactionSubmitted`, {
|
|
1600
1644
|
transactionMeta,
|
|
1601
1645
|
});
|
|
1602
|
-
this.
|
|
1646
|
+
this.messenger.publish(`${controllerName}:transactionFinished`, transactionMeta);
|
|
1603
1647
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionId}:finished`, transactionMeta);
|
|
1604
1648
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, transactionMeta);
|
|
1605
1649
|
return ApprovalState.Approved;
|
|
@@ -1633,9 +1677,9 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1633
1677
|
status: types_1.TransactionStatus.rejected,
|
|
1634
1678
|
error: (0, utils_2.normalizeTxError)(error ?? rpc_errors_1.providerErrors.userRejectedRequest()),
|
|
1635
1679
|
};
|
|
1636
|
-
this.
|
|
1680
|
+
this.messenger.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1637
1681
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1638
|
-
this.
|
|
1682
|
+
this.messenger.publish(`${controllerName}:transactionRejected`, {
|
|
1639
1683
|
transactionMeta: updatedTransactionMeta,
|
|
1640
1684
|
actionId,
|
|
1641
1685
|
});
|
|
@@ -1682,7 +1726,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1682
1726
|
id,
|
|
1683
1727
|
parentContext: traceContext,
|
|
1684
1728
|
});
|
|
1685
|
-
return (await this.
|
|
1729
|
+
return (await this.messenger.call('ApprovalController:addRequest', {
|
|
1686
1730
|
id,
|
|
1687
1731
|
origin: origin || controller_utils_1.ORIGIN_METAMASK,
|
|
1688
1732
|
type,
|
|
@@ -1753,7 +1797,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1753
1797
|
]);
|
|
1754
1798
|
(0, logger_1.projectLogger)('Added incoming transactions to state', finalTransactions.length, finalTransactions);
|
|
1755
1799
|
});
|
|
1756
|
-
this.
|
|
1800
|
+
this.messenger.publish(`${controllerName}:incomingTransactionsReceived`, finalTransactions);
|
|
1757
1801
|
}, _TransactionController_generateDappSuggestedGasFees = function _TransactionController_generateDappSuggestedGasFees(txParams, origin) {
|
|
1758
1802
|
if (!origin || origin === controller_utils_1.ORIGIN_METAMASK) {
|
|
1759
1803
|
return undefined;
|
|
@@ -1835,7 +1879,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1835
1879
|
...transactionMeta,
|
|
1836
1880
|
status: types_1.TransactionStatus.dropped,
|
|
1837
1881
|
};
|
|
1838
|
-
this.
|
|
1882
|
+
this.messenger.publish(`${controllerName}:transactionDropped`, {
|
|
1839
1883
|
transactionMeta: updatedTransactionMeta,
|
|
1840
1884
|
});
|
|
1841
1885
|
this.updateTransaction(updatedTransactionMeta, 'TransactionController#setTransactionStatusDropped - Transaction dropped');
|
|
@@ -1871,7 +1915,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1871
1915
|
const { authorizationList, from } = txParams;
|
|
1872
1916
|
const signedAuthorizationList = await (0, eip7702_1.signAuthorizationList)({
|
|
1873
1917
|
authorizationList,
|
|
1874
|
-
messenger: this.
|
|
1918
|
+
messenger: this.messenger,
|
|
1875
1919
|
transactionMeta,
|
|
1876
1920
|
});
|
|
1877
1921
|
if (signedAuthorizationList) {
|
|
@@ -1919,7 +1963,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1919
1963
|
this.updateTransaction(transactionMetaWithRawTx, 'TransactionController#approveTransaction - RawTransaction added');
|
|
1920
1964
|
return rawTx;
|
|
1921
1965
|
}, _TransactionController_onTransactionStatusChange = function _TransactionController_onTransactionStatusChange(transactionMeta) {
|
|
1922
|
-
this.
|
|
1966
|
+
this.messenger.publish(`${controllerName}:transactionStatusUpdated`, {
|
|
1923
1967
|
transactionMeta,
|
|
1924
1968
|
});
|
|
1925
1969
|
}, _TransactionController_getNonceTrackerTransactions = function _TransactionController_getNonceTrackerTransactions(statuses, address, chainId) {
|
|
@@ -1927,7 +1971,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1927
1971
|
}, _TransactionController_onConfirmedTransaction = function _TransactionController_onConfirmedTransaction(transactionMeta) {
|
|
1928
1972
|
(0, logger_1.projectLogger)('Processing confirmed transaction', transactionMeta.id);
|
|
1929
1973
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_markNonceDuplicatesDropped).call(this, transactionMeta.id);
|
|
1930
|
-
this.
|
|
1974
|
+
this.messenger.publish(`${controllerName}:transactionConfirmed`, transactionMeta);
|
|
1931
1975
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, transactionMeta);
|
|
1932
1976
|
// Intentional given potential duration of process.
|
|
1933
1977
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updatePostBalance).call(this, transactionMeta).catch((error) => {
|
|
@@ -1946,7 +1990,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1946
1990
|
getTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).bind(this),
|
|
1947
1991
|
updateTransaction: this.updateTransaction.bind(this),
|
|
1948
1992
|
});
|
|
1949
|
-
this.
|
|
1993
|
+
this.messenger.publish(`${controllerName}:postTransactionBalanceUpdated`, {
|
|
1950
1994
|
transactionMeta: updatedTransactionMeta,
|
|
1951
1995
|
approvalTransactionMeta,
|
|
1952
1996
|
});
|
|
@@ -1977,7 +2021,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1977
2021
|
getGlobalLock: () => __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").acquireNonceLockForChainIdKey({
|
|
1978
2022
|
chainId,
|
|
1979
2023
|
}),
|
|
1980
|
-
messenger: this.
|
|
2024
|
+
messenger: this.messenger,
|
|
1981
2025
|
publishTransaction: (_ethQuery, transactionMeta) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_publishTransaction).call(this, _ethQuery, transactionMeta, {
|
|
1982
2026
|
skipSubmitHistory: true,
|
|
1983
2027
|
}),
|
|
@@ -2107,7 +2151,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2107
2151
|
chainId,
|
|
2108
2152
|
getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f"),
|
|
2109
2153
|
isEIP7702GasFeeTokensEnabled: __classPrivateFieldGet(this, _TransactionController_isEIP7702GasFeeTokensEnabled, "f"),
|
|
2110
|
-
messenger: this.
|
|
2154
|
+
messenger: this.messenger,
|
|
2111
2155
|
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
2112
2156
|
transactionMeta,
|
|
2113
2157
|
});
|
|
@@ -2159,9 +2203,9 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2159
2203
|
state.transactionBatches[index] = updated ?? batch;
|
|
2160
2204
|
});
|
|
2161
2205
|
}, _TransactionController_getSelectedAccount = function _TransactionController_getSelectedAccount() {
|
|
2162
|
-
return this.
|
|
2206
|
+
return this.messenger.call('AccountsController:getSelectedAccount');
|
|
2163
2207
|
}, _TransactionController_getInternalAccounts = function _TransactionController_getInternalAccounts() {
|
|
2164
|
-
const state = this.
|
|
2208
|
+
const state = this.messenger.call('AccountsController:getState');
|
|
2165
2209
|
return Object.values(state.internalAccounts?.accounts ?? {})
|
|
2166
2210
|
.filter((account) => account.type === 'eip155:eoa')
|
|
2167
2211
|
.map((account) => account.address);
|
|
@@ -2201,18 +2245,20 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2201
2245
|
isCustomNetwork,
|
|
2202
2246
|
isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
|
|
2203
2247
|
getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f"),
|
|
2204
|
-
messenger: this.
|
|
2248
|
+
messenger: this.messenger,
|
|
2205
2249
|
txMeta: transactionMeta,
|
|
2206
2250
|
});
|
|
2207
2251
|
}, _TransactionController_registerActionHandlers = function _TransactionController_registerActionHandlers() {
|
|
2208
|
-
this.
|
|
2209
|
-
this.
|
|
2210
|
-
this.
|
|
2211
|
-
this.
|
|
2212
|
-
this.
|
|
2213
|
-
this.
|
|
2214
|
-
this.
|
|
2215
|
-
this.
|
|
2252
|
+
this.messenger.registerActionHandler(`${controllerName}:addTransaction`, this.addTransaction.bind(this));
|
|
2253
|
+
this.messenger.registerActionHandler(`${controllerName}:addTransactionBatch`, this.addTransactionBatch.bind(this));
|
|
2254
|
+
this.messenger.registerActionHandler(`${controllerName}:confirmExternalTransaction`, this.confirmExternalTransaction.bind(this));
|
|
2255
|
+
this.messenger.registerActionHandler(`${controllerName}:estimateGas`, this.estimateGas.bind(this));
|
|
2256
|
+
this.messenger.registerActionHandler(`${controllerName}:getNonceLock`, this.getNonceLock.bind(this));
|
|
2257
|
+
this.messenger.registerActionHandler(`${controllerName}:getTransactions`, this.getTransactions.bind(this));
|
|
2258
|
+
this.messenger.registerActionHandler(`${controllerName}:updateCustodialTransaction`, this.updateCustodialTransaction.bind(this));
|
|
2259
|
+
this.messenger.registerActionHandler(`${controllerName}:updateTransaction`, this.updateTransaction.bind(this));
|
|
2260
|
+
this.messenger.registerActionHandler(`${controllerName}:emulateNewTransaction`, this.emulateNewTransaction.bind(this));
|
|
2261
|
+
this.messenger.registerActionHandler(`${controllerName}:emulateTransactionUpdate`, this.emulateTransactionUpdate.bind(this));
|
|
2216
2262
|
}, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
|
|
2217
2263
|
this.update((state) => {
|
|
2218
2264
|
const transactions = state.transactions.filter(({ id }) => id !== transactionId);
|
|
@@ -2252,13 +2298,13 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2252
2298
|
error: (0, utils_2.normalizeTxError)(error),
|
|
2253
2299
|
};
|
|
2254
2300
|
}
|
|
2255
|
-
this.
|
|
2301
|
+
this.messenger.publish(`${controllerName}:transactionFailed`, {
|
|
2256
2302
|
actionId,
|
|
2257
2303
|
error: error.message,
|
|
2258
2304
|
transactionMeta: newTransactionMeta,
|
|
2259
2305
|
});
|
|
2260
2306
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, newTransactionMeta);
|
|
2261
|
-
this.
|
|
2307
|
+
this.messenger.publish(`${controllerName}:transactionFinished`, newTransactionMeta);
|
|
2262
2308
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, newTransactionMeta);
|
|
2263
2309
|
}, _TransactionController_runAfterSimulateHook = async function _TransactionController_runAfterSimulateHook(transactionMeta) {
|
|
2264
2310
|
(0, logger_1.projectLogger)('Calling afterSimulate hook', transactionMeta);
|