@metamask-previews/transaction-controller 60.4.0-preview-b896289e → 60.5.0-preview-683bbcb0
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 +18 -4
- package/dist/TransactionController.cjs +74 -127
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +18 -50
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +18 -50
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +75 -128
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +44 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +44 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/first-time-interaction.cjs +77 -0
- package/dist/utils/first-time-interaction.cjs.map +1 -0
- package/dist/utils/first-time-interaction.d.cts +30 -0
- package/dist/utils/first-time-interaction.d.cts.map +1 -0
- package/dist/utils/first-time-interaction.d.mts +30 -0
- package/dist/utils/first-time-interaction.d.mts.map +1 -0
- package/dist/utils/first-time-interaction.mjs +73 -0
- package/dist/utils/first-time-interaction.mjs.map +1 -0
- package/dist/utils/transaction-type.cjs +22 -5
- package/dist/utils/transaction-type.cjs.map +1 -1
- package/dist/utils/transaction-type.d.cts +14 -0
- package/dist/utils/transaction-type.d.cts.map +1 -1
- package/dist/utils/transaction-type.d.mts +14 -0
- package/dist/utils/transaction-type.d.mts.map +1 -1
- package/dist/utils/transaction-type.mjs +20 -4
- package/dist/utils/transaction-type.mjs.map +1 -1
- package/package.json +2 -3
|
@@ -9,28 +9,27 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_afterSign, _TransactionController_afterSimulate, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_getSimulationConfig, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isHistoryDisabled, _TransactionController_isSendFlowHistoryDisabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_securityProviderRequest, _TransactionController_sign, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_getTransactionWithActionId, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal,
|
|
12
|
+
var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_afterSign, _TransactionController_afterSimulate, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_getSimulationConfig, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isHistoryDisabled, _TransactionController_isSendFlowHistoryDisabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_securityProviderRequest, _TransactionController_sign, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_getTransactionWithActionId, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_onGasFeePollerTransactionBatchUpdate, _TransactionController_updateTransactionBatch, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_runAfterSimulateHook;
|
|
13
13
|
function $importDefault(module) {
|
|
14
14
|
if (module?.__esModule) {
|
|
15
15
|
return module.default;
|
|
16
16
|
}
|
|
17
17
|
return module;
|
|
18
18
|
}
|
|
19
|
-
import { BaseController } from "@metamask/base-controller
|
|
19
|
+
import { BaseController } from "@metamask/base-controller";
|
|
20
20
|
import { query, ApprovalType, ORIGIN_METAMASK, convertHexToDecimal } from "@metamask/controller-utils";
|
|
21
21
|
import $EthQuery from "@metamask/eth-query";
|
|
22
22
|
const EthQuery = $importDefault($EthQuery);
|
|
23
23
|
import { NetworkClientType } from "@metamask/network-controller";
|
|
24
24
|
import { NonceTracker } from "@metamask/nonce-tracker";
|
|
25
25
|
import { errorCodes, rpcErrors, providerErrors, JsonRpcError } from "@metamask/rpc-errors";
|
|
26
|
-
import { add0x
|
|
26
|
+
import { add0x } from "@metamask/utils";
|
|
27
27
|
// This package purposefully relies on Node's EventEmitter module.
|
|
28
28
|
// eslint-disable-next-line import-x/no-nodejs-modules
|
|
29
29
|
import { EventEmitter } from "events";
|
|
30
30
|
import $lodash from "lodash";
|
|
31
31
|
const { cloneDeep, mapValues, merge, pickBy, sortBy } = $lodash;
|
|
32
32
|
import { v1 as random } from "uuid";
|
|
33
|
-
import { getAccountAddressRelationship } from "./api/accounts-api.mjs";
|
|
34
33
|
import { DefaultGasFeeFlow } from "./gas-flows/DefaultGasFeeFlow.mjs";
|
|
35
34
|
import { LineaGasFeeFlow } from "./gas-flows/LineaGasFeeFlow.mjs";
|
|
36
35
|
import { OptimismLayer1GasFeeFlow } from "./gas-flows/OptimismLayer1GasFeeFlow.mjs";
|
|
@@ -51,6 +50,7 @@ import { getBalanceChanges } from "./utils/balance-changes.mjs";
|
|
|
51
50
|
import { addTransactionBatch, isAtomicBatchSupported } from "./utils/batch.mjs";
|
|
52
51
|
import { generateEIP7702BatchTransaction, getDelegationAddress, signAuthorizationList } from "./utils/eip7702.mjs";
|
|
53
52
|
import { validateConfirmedExternalTransaction } from "./utils/external-transactions.mjs";
|
|
53
|
+
import { updateFirstTimeInteraction } from "./utils/first-time-interaction.mjs";
|
|
54
54
|
import { addGasBuffer, estimateGas, updateGas } from "./utils/gas.mjs";
|
|
55
55
|
import { getGasFeeTokens } from "./utils/gas-fee-tokens.mjs";
|
|
56
56
|
import { updateGasFees } from "./utils/gas-fees.mjs";
|
|
@@ -63,7 +63,7 @@ import { getTransactionParamsWithIncreasedGasFee } from "./utils/retry.mjs";
|
|
|
63
63
|
import { updatePostTransactionBalance, updateSwapsTransaction } from "./utils/swaps.mjs";
|
|
64
64
|
import { determineTransactionType } from "./utils/transaction-type.mjs";
|
|
65
65
|
import { normalizeTransactionParams, isEIP1559Transaction, validateGasValues, validateIfTransactionUnapproved, normalizeTxError, normalizeGasFeeValues, setEnvelopeType } from "./utils/utils.mjs";
|
|
66
|
-
import { ErrorCode,
|
|
66
|
+
import { ErrorCode, validateTransactionOrigin, validateTxParams } from "./utils/validation.mjs";
|
|
67
67
|
/**
|
|
68
68
|
* Metadata for the TransactionController state, describing how to "anonymize"
|
|
69
69
|
* the state and which parts should be persisted.
|
|
@@ -72,31 +72,31 @@ const metadata = {
|
|
|
72
72
|
transactions: {
|
|
73
73
|
includeInStateLogs: true,
|
|
74
74
|
persist: true,
|
|
75
|
-
|
|
75
|
+
anonymous: false,
|
|
76
76
|
usedInUi: true,
|
|
77
77
|
},
|
|
78
78
|
transactionBatches: {
|
|
79
79
|
includeInStateLogs: true,
|
|
80
80
|
persist: true,
|
|
81
|
-
|
|
81
|
+
anonymous: false,
|
|
82
82
|
usedInUi: true,
|
|
83
83
|
},
|
|
84
84
|
methodData: {
|
|
85
85
|
includeInStateLogs: true,
|
|
86
86
|
persist: true,
|
|
87
|
-
|
|
87
|
+
anonymous: false,
|
|
88
88
|
usedInUi: true,
|
|
89
89
|
},
|
|
90
90
|
lastFetchedBlockNumbers: {
|
|
91
91
|
includeInStateLogs: true,
|
|
92
92
|
persist: true,
|
|
93
|
-
|
|
93
|
+
anonymous: false,
|
|
94
94
|
usedInUi: false,
|
|
95
95
|
},
|
|
96
96
|
submitHistory: {
|
|
97
97
|
includeInStateLogs: true,
|
|
98
98
|
persist: true,
|
|
99
|
-
|
|
99
|
+
anonymous: false,
|
|
100
100
|
usedInUi: false,
|
|
101
101
|
},
|
|
102
102
|
};
|
|
@@ -201,7 +201,7 @@ export class TransactionController extends BaseController {
|
|
|
201
201
|
_TransactionController_checkForPendingTransactionAndStartPolling.set(this, () => {
|
|
202
202
|
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").checkForPendingTransactionAndStartPolling();
|
|
203
203
|
});
|
|
204
|
-
this.
|
|
204
|
+
this.messagingSystem = messenger;
|
|
205
205
|
__classPrivateFieldSet(this, _TransactionController_afterAdd, hooks?.afterAdd ?? (() => Promise.resolve({})), "f");
|
|
206
206
|
__classPrivateFieldSet(this, _TransactionController_afterSign, hooks?.afterSign ?? (() => true), "f");
|
|
207
207
|
__classPrivateFieldSet(this, _TransactionController_afterSimulate, hooks?.afterSimulate ?? (() => Promise.resolve({})), "f");
|
|
@@ -237,19 +237,19 @@ export class TransactionController extends BaseController {
|
|
|
237
237
|
__classPrivateFieldSet(this, _TransactionController_trace, trace ?? ((_request, fn) => fn?.()), "f");
|
|
238
238
|
__classPrivateFieldSet(this, _TransactionController_transactionHistoryLimit, transactionHistoryLimit, "f");
|
|
239
239
|
const findNetworkClientIdByChainId = (chainId) => {
|
|
240
|
-
return this.
|
|
240
|
+
return this.messagingSystem.call(`NetworkController:findNetworkClientIdByChainId`, chainId);
|
|
241
241
|
};
|
|
242
242
|
__classPrivateFieldSet(this, _TransactionController_multichainTrackingHelper, new MultichainTrackingHelper({
|
|
243
243
|
findNetworkClientIdByChainId,
|
|
244
244
|
getNetworkClientById: ((networkClientId) => {
|
|
245
|
-
return this.
|
|
245
|
+
return this.messagingSystem.call(`NetworkController:getNetworkClientById`, networkClientId);
|
|
246
246
|
}),
|
|
247
247
|
getNetworkClientRegistry,
|
|
248
248
|
removePendingTransactionTrackerListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removePendingTransactionTrackerListeners).bind(this),
|
|
249
249
|
createNonceTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createNonceTracker).bind(this),
|
|
250
250
|
createPendingTransactionTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).bind(this),
|
|
251
251
|
onNetworkStateChange: (listener) => {
|
|
252
|
-
this.
|
|
252
|
+
this.messagingSystem.subscribe('NetworkController:stateChange', listener);
|
|
253
253
|
},
|
|
254
254
|
}), "f");
|
|
255
255
|
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").initialize();
|
|
@@ -263,9 +263,9 @@ export class TransactionController extends BaseController {
|
|
|
263
263
|
getTransactions: () => this.state.transactions,
|
|
264
264
|
getTransactionBatches: () => this.state.transactionBatches,
|
|
265
265
|
layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
|
|
266
|
-
messenger: this.
|
|
266
|
+
messenger: this.messagingSystem,
|
|
267
267
|
onStateChange: (listener) => {
|
|
268
|
-
this.
|
|
268
|
+
this.messagingSystem.subscribe('TransactionController:stateChange', listener);
|
|
269
269
|
},
|
|
270
270
|
});
|
|
271
271
|
gasFeePoller.hub.on('transaction-updated', __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onGasFeePollerTransactionUpdate).bind(this));
|
|
@@ -285,7 +285,7 @@ export class TransactionController extends BaseController {
|
|
|
285
285
|
getLocalTransactions: () => this.state.transactions,
|
|
286
286
|
includeTokenTransfers: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").includeTokenTransfers,
|
|
287
287
|
isEnabled: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").isEnabled,
|
|
288
|
-
messenger: this.
|
|
288
|
+
messenger: this.messagingSystem,
|
|
289
289
|
remoteTransactionSource: new AccountsApiRemoteTransactionSource(),
|
|
290
290
|
trimTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_trimTransactionsForState).bind(this),
|
|
291
291
|
updateTransactions: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").updateTransactions,
|
|
@@ -293,11 +293,11 @@ export class TransactionController extends BaseController {
|
|
|
293
293
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addIncomingTransactionHelperListeners).call(this, __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f"));
|
|
294
294
|
// when transactionsController state changes
|
|
295
295
|
// check for pending transactions and start polling if there are any
|
|
296
|
-
this.
|
|
296
|
+
this.messagingSystem.subscribe('TransactionController:stateChange', __classPrivateFieldGet(this, _TransactionController_checkForPendingTransactionAndStartPolling, "f"));
|
|
297
297
|
new ResimulateHelper({
|
|
298
298
|
simulateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateSimulationData).bind(this),
|
|
299
299
|
onTransactionsUpdate: (listener) => {
|
|
300
|
-
this.
|
|
300
|
+
this.messagingSystem.subscribe('TransactionController:stateChange', listener, (controllerState) => controllerState.transactions);
|
|
301
301
|
},
|
|
302
302
|
getTransactions: () => this.state.transactions,
|
|
303
303
|
});
|
|
@@ -328,7 +328,7 @@ export class TransactionController extends BaseController {
|
|
|
328
328
|
* @returns Result object containing the generated batch ID.
|
|
329
329
|
*/
|
|
330
330
|
async addTransactionBatch(request) {
|
|
331
|
-
const { blockTracker } = this.
|
|
331
|
+
const { blockTracker } = this.messagingSystem.call(`NetworkController:getNetworkClientById`, request.networkClientId);
|
|
332
332
|
return await addTransactionBatch({
|
|
333
333
|
addTransaction: this.addTransaction.bind(this),
|
|
334
334
|
getChainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).bind(this),
|
|
@@ -344,7 +344,7 @@ export class TransactionController extends BaseController {
|
|
|
344
344
|
}),
|
|
345
345
|
getTransaction: (transactionId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionOrThrow).call(this, transactionId),
|
|
346
346
|
isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f"),
|
|
347
|
-
messenger: this.
|
|
347
|
+
messenger: this.messagingSystem,
|
|
348
348
|
publishBatchHook: __classPrivateFieldGet(this, _TransactionController_publishBatchHook, "f"),
|
|
349
349
|
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
350
350
|
publishTransaction: (ethQuery, transactionMeta) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_publishTransaction).call(this, ethQuery, transactionMeta),
|
|
@@ -364,36 +364,17 @@ export class TransactionController extends BaseController {
|
|
|
364
364
|
return isAtomicBatchSupported({
|
|
365
365
|
...request,
|
|
366
366
|
getEthQuery: (chainId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { chainId }),
|
|
367
|
-
messenger: this.
|
|
367
|
+
messenger: this.messagingSystem,
|
|
368
368
|
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
369
369
|
});
|
|
370
370
|
}
|
|
371
371
|
/**
|
|
372
372
|
* Add a new unapproved transaction to state. Parameters will be validated, a
|
|
373
|
-
* unique transaction
|
|
374
|
-
* if not provided.
|
|
373
|
+
* unique transaction ID will be generated, and `gas` and `gasPrice` will be calculated
|
|
374
|
+
* if not provided. A `<tx.id>:unapproved` hub event will be emitted once added.
|
|
375
375
|
*
|
|
376
376
|
* @param txParams - Standard parameters for an Ethereum transaction.
|
|
377
377
|
* @param options - Additional options to control how the transaction is added.
|
|
378
|
-
* @param options.actionId - Unique ID to prevent duplicate requests.
|
|
379
|
-
* @param options.assetsFiatValues - The fiat values of the assets being sent and received.
|
|
380
|
-
* @param options.batchId - A custom ID for the batch this transaction belongs to.
|
|
381
|
-
* @param options.deviceConfirmedOn - An enum to indicate what device confirmed the transaction.
|
|
382
|
-
* @param options.disableGasBuffer - Whether to disable the gas estimation buffer.
|
|
383
|
-
* @param options.isGasFeeIncluded - Whether MetaMask will be compensated for the gas fee by the transaction.
|
|
384
|
-
* @param options.method - RPC method that requested the transaction.
|
|
385
|
-
* @param options.nestedTransactions - Params for any nested transactions encoded in the data.
|
|
386
|
-
* @param options.origin - The origin of the transaction request, such as a dApp hostname.
|
|
387
|
-
* @param options.publishHook - Custom logic to publish the transaction.
|
|
388
|
-
* @param options.requireApproval - Whether the transaction requires approval by the user, defaults to true unless explicitly disabled.
|
|
389
|
-
* @param options.securityAlertResponse - Response from security validator.
|
|
390
|
-
* @param options.sendFlowHistory - The sendFlowHistory entries to add.
|
|
391
|
-
* @param options.type - Type of transaction to add, such as 'cancel' or 'swap'.
|
|
392
|
-
* @param options.swaps - Options for swaps transactions.
|
|
393
|
-
* @param options.swaps.hasApproveTx - Whether the transaction has an approval transaction.
|
|
394
|
-
* @param options.swaps.meta - Metadata for swap transaction.
|
|
395
|
-
* @param options.networkClientId - The id of the network client for this transaction.
|
|
396
|
-
* @param options.traceContext - The parent context for any new traces.
|
|
397
378
|
* @returns Object containing a promise resolving to the transaction hash if approved.
|
|
398
379
|
*/
|
|
399
380
|
async addTransaction(txParams, options) {
|
|
@@ -492,7 +473,7 @@ export class TransactionController extends BaseController {
|
|
|
492
473
|
addedTransactionMeta = updateSwapsTransaction(addedTransactionMeta, transactionType, swaps, {
|
|
493
474
|
isSwapsDisabled: __classPrivateFieldGet(this, _TransactionController_isSwapsDisabled, "f"),
|
|
494
475
|
cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
|
|
495
|
-
messenger: this.
|
|
476
|
+
messenger: this.messagingSystem,
|
|
496
477
|
});
|
|
497
478
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addMetadata).call(this, addedTransactionMeta);
|
|
498
479
|
if (requireApproval !== false) {
|
|
@@ -502,8 +483,14 @@ export class TransactionController extends BaseController {
|
|
|
502
483
|
log('Error while updating simulation data', error);
|
|
503
484
|
throw error;
|
|
504
485
|
});
|
|
505
|
-
|
|
486
|
+
updateFirstTimeInteraction({
|
|
487
|
+
existingTransactions: this.state.transactions,
|
|
488
|
+
getTransaction: (transactionId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId),
|
|
489
|
+
isFirstTimeInteractionEnabled: __classPrivateFieldGet(this, _TransactionController_isFirstTimeInteractionEnabled, "f"),
|
|
490
|
+
trace: __classPrivateFieldGet(this, _TransactionController_trace, "f"),
|
|
506
491
|
traceContext,
|
|
492
|
+
transactionMeta: addedTransactionMeta,
|
|
493
|
+
updateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).bind(this),
|
|
507
494
|
}).catch((error) => {
|
|
508
495
|
log('Error while updating first interaction properties', error);
|
|
509
496
|
});
|
|
@@ -511,7 +498,7 @@ export class TransactionController extends BaseController {
|
|
|
511
498
|
else {
|
|
512
499
|
log('Skipping simulation & first interaction update as approval not required');
|
|
513
500
|
}
|
|
514
|
-
this.
|
|
501
|
+
this.messagingSystem.publish(`${controllerName}:unapprovedTransactionAdded`, addedTransactionMeta);
|
|
515
502
|
}
|
|
516
503
|
return {
|
|
517
504
|
result: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_processApproval).call(this, addedTransactionMeta, {
|
|
@@ -564,7 +551,7 @@ export class TransactionController extends BaseController {
|
|
|
564
551
|
txParams.value = '0x0';
|
|
565
552
|
},
|
|
566
553
|
afterSubmit: (newTransactionMeta) => {
|
|
567
|
-
this.
|
|
554
|
+
this.messagingSystem.publish(`${controllerName}:transactionFinished`, newTransactionMeta);
|
|
568
555
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${newTransactionMeta.id}:finished`, newTransactionMeta);
|
|
569
556
|
},
|
|
570
557
|
});
|
|
@@ -588,7 +575,7 @@ export class TransactionController extends BaseController {
|
|
|
588
575
|
transactionId,
|
|
589
576
|
transactionType: TransactionType.retry,
|
|
590
577
|
afterSubmit: (newTransactionMeta) => {
|
|
591
|
-
this.
|
|
578
|
+
this.messagingSystem.publish(`${controllerName}:speedupTransactionAdded`, newTransactionMeta);
|
|
592
579
|
},
|
|
593
580
|
});
|
|
594
581
|
}
|
|
@@ -611,7 +598,7 @@ export class TransactionController extends BaseController {
|
|
|
611
598
|
ignoreDelegationSignatures,
|
|
612
599
|
isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
|
|
613
600
|
getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f"),
|
|
614
|
-
messenger: this.
|
|
601
|
+
messenger: this.messagingSystem,
|
|
615
602
|
txParams: transaction,
|
|
616
603
|
});
|
|
617
604
|
return { gas: estimatedGas, simulationFails };
|
|
@@ -633,7 +620,7 @@ export class TransactionController extends BaseController {
|
|
|
633
620
|
ethQuery,
|
|
634
621
|
isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
|
|
635
622
|
getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f"),
|
|
636
|
-
messenger: this.
|
|
623
|
+
messenger: this.messagingSystem,
|
|
637
624
|
txParams: transaction,
|
|
638
625
|
});
|
|
639
626
|
const gas = addGasBuffer(estimatedGas, blockGasLimit, multiplier);
|
|
@@ -735,7 +722,7 @@ export class TransactionController extends BaseController {
|
|
|
735
722
|
log('Error while updating post balance', error);
|
|
736
723
|
throw error;
|
|
737
724
|
});
|
|
738
|
-
this.
|
|
725
|
+
this.messagingSystem.publish(`${controllerName}:transactionConfirmed`, updatedTransactionMeta);
|
|
739
726
|
}
|
|
740
727
|
catch (error) {
|
|
741
728
|
console.error('Failed to confirm external transaction', error);
|
|
@@ -932,7 +919,7 @@ export class TransactionController extends BaseController {
|
|
|
932
919
|
}
|
|
933
920
|
await updateTransactionLayer1GasFee({
|
|
934
921
|
layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
|
|
935
|
-
messenger: this.
|
|
922
|
+
messenger: this.messagingSystem,
|
|
936
923
|
provider,
|
|
937
924
|
transactionMeta: updatedTransaction,
|
|
938
925
|
});
|
|
@@ -1060,7 +1047,7 @@ export class TransactionController extends BaseController {
|
|
|
1060
1047
|
this.updateTransaction(updatedTransactionMeta, `${controllerName}:updateCustodialTransaction - Custodial transaction updated`);
|
|
1061
1048
|
if (status &&
|
|
1062
1049
|
[TransactionStatus.submitted, TransactionStatus.failed].includes(status)) {
|
|
1063
|
-
this.
|
|
1050
|
+
this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1064
1051
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${updatedTransactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1065
1052
|
}
|
|
1066
1053
|
return updatedTransactionMeta;
|
|
@@ -1157,7 +1144,7 @@ export class TransactionController extends BaseController {
|
|
|
1157
1144
|
networkClientId,
|
|
1158
1145
|
};
|
|
1159
1146
|
// Guaranteed as the default gas fee flow matches all transactions.
|
|
1160
|
-
const gasFeeFlow = getGasFeeFlow(transactionMeta, __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"), this.
|
|
1147
|
+
const gasFeeFlow = getGasFeeFlow(transactionMeta, __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"), this.messagingSystem);
|
|
1161
1148
|
const ethQuery = new EthQuery(provider);
|
|
1162
1149
|
const gasFeeControllerData = await __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f").call(this, {
|
|
1163
1150
|
networkClientId,
|
|
@@ -1165,7 +1152,7 @@ export class TransactionController extends BaseController {
|
|
|
1165
1152
|
return gasFeeFlow.getGasFees({
|
|
1166
1153
|
ethQuery,
|
|
1167
1154
|
gasFeeControllerData,
|
|
1168
|
-
messenger: this.
|
|
1155
|
+
messenger: this.messagingSystem,
|
|
1169
1156
|
transactionMeta,
|
|
1170
1157
|
});
|
|
1171
1158
|
}
|
|
@@ -1185,7 +1172,7 @@ export class TransactionController extends BaseController {
|
|
|
1185
1172
|
});
|
|
1186
1173
|
return await getTransactionLayer1GasFee({
|
|
1187
1174
|
layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
|
|
1188
|
-
messenger: this.
|
|
1175
|
+
messenger: this.messagingSystem,
|
|
1189
1176
|
provider,
|
|
1190
1177
|
transactionMeta: {
|
|
1191
1178
|
txParams: transactionParams,
|
|
@@ -1374,11 +1361,11 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
|
|
|
1374
1361
|
newTransactionMeta.hash = hash;
|
|
1375
1362
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addMetadata).call(this, newTransactionMeta);
|
|
1376
1363
|
// speedUpTransaction has no approval request, so we assume the user has already approved the transaction
|
|
1377
|
-
this.
|
|
1364
|
+
this.messagingSystem.publish(`${controllerName}:transactionApproved`, {
|
|
1378
1365
|
transactionMeta: newTransactionMeta,
|
|
1379
1366
|
actionId,
|
|
1380
1367
|
});
|
|
1381
|
-
this.
|
|
1368
|
+
this.messagingSystem.publish(`${controllerName}:transactionSubmitted`, {
|
|
1382
1369
|
transactionMeta: newTransactionMeta,
|
|
1383
1370
|
actionId,
|
|
1384
1371
|
});
|
|
@@ -1425,12 +1412,12 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
|
|
|
1425
1412
|
gasFeeFlows: __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"),
|
|
1426
1413
|
getGasFeeEstimates: __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f"),
|
|
1427
1414
|
getSavedGasFees: __classPrivateFieldGet(this, _TransactionController_getSavedGasFees, "f").bind(this),
|
|
1428
|
-
messenger: this.
|
|
1415
|
+
messenger: this.messagingSystem,
|
|
1429
1416
|
txMeta: transactionMeta,
|
|
1430
1417
|
}));
|
|
1431
1418
|
await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Update Layer 1 Gas Fees', parentContext: traceContext }, async () => await updateTransactionLayer1GasFee({
|
|
1432
1419
|
layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
|
|
1433
|
-
messenger: this.
|
|
1420
|
+
messenger: this.messagingSystem,
|
|
1434
1421
|
provider,
|
|
1435
1422
|
transactionMeta,
|
|
1436
1423
|
}));
|
|
@@ -1475,7 +1462,7 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
|
|
|
1475
1462
|
resultCallbacks.success();
|
|
1476
1463
|
}
|
|
1477
1464
|
const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
|
|
1478
|
-
this.
|
|
1465
|
+
this.messagingSystem.publish(`${controllerName}:transactionApproved`, {
|
|
1479
1466
|
transactionMeta: updatedTransactionMeta,
|
|
1480
1467
|
actionId,
|
|
1481
1468
|
});
|
|
@@ -1563,7 +1550,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1563
1550
|
const rawTx = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Sign', parentContext: traceContext }, () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_signTransaction).call(this, transactionMeta));
|
|
1564
1551
|
if (!(await __classPrivateFieldGet(this, _TransactionController_beforePublish, "f").call(this, transactionMeta))) {
|
|
1565
1552
|
log('Skipping publishing transaction based on hook');
|
|
1566
|
-
this.
|
|
1553
|
+
this.messagingSystem.publish(`${controllerName}:transactionPublishingSkipped`, transactionMeta);
|
|
1567
1554
|
return ApprovalState.SkippedViaBeforePublishHook;
|
|
1568
1555
|
}
|
|
1569
1556
|
if (!rawTx && !transactionMeta.isExternalSign) {
|
|
@@ -1613,10 +1600,10 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1613
1600
|
log('Updated pre-transaction balance', preTxBalance);
|
|
1614
1601
|
}
|
|
1615
1602
|
});
|
|
1616
|
-
this.
|
|
1603
|
+
this.messagingSystem.publish(`${controllerName}:transactionSubmitted`, {
|
|
1617
1604
|
transactionMeta,
|
|
1618
1605
|
});
|
|
1619
|
-
this.
|
|
1606
|
+
this.messagingSystem.publish(`${controllerName}:transactionFinished`, transactionMeta);
|
|
1620
1607
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionId}:finished`, transactionMeta);
|
|
1621
1608
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, transactionMeta);
|
|
1622
1609
|
return ApprovalState.Approved;
|
|
@@ -1650,9 +1637,9 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1650
1637
|
status: TransactionStatus.rejected,
|
|
1651
1638
|
error: normalizeTxError(error ?? providerErrors.userRejectedRequest()),
|
|
1652
1639
|
};
|
|
1653
|
-
this.
|
|
1640
|
+
this.messagingSystem.publish(`${controllerName}:transactionFinished`, updatedTransactionMeta);
|
|
1654
1641
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, updatedTransactionMeta);
|
|
1655
|
-
this.
|
|
1642
|
+
this.messagingSystem.publish(`${controllerName}:transactionRejected`, {
|
|
1656
1643
|
transactionMeta: updatedTransactionMeta,
|
|
1657
1644
|
actionId,
|
|
1658
1645
|
});
|
|
@@ -1699,7 +1686,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1699
1686
|
id,
|
|
1700
1687
|
parentContext: traceContext,
|
|
1701
1688
|
});
|
|
1702
|
-
return (await this.
|
|
1689
|
+
return (await this.messagingSystem.call('ApprovalController:addRequest', {
|
|
1703
1690
|
id,
|
|
1704
1691
|
origin: origin || ORIGIN_METAMASK,
|
|
1705
1692
|
type,
|
|
@@ -1770,7 +1757,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1770
1757
|
]);
|
|
1771
1758
|
log('Added incoming transactions to state', finalTransactions.length, finalTransactions);
|
|
1772
1759
|
});
|
|
1773
|
-
this.
|
|
1760
|
+
this.messagingSystem.publish(`${controllerName}:incomingTransactionsReceived`, finalTransactions);
|
|
1774
1761
|
}, _TransactionController_generateDappSuggestedGasFees = function _TransactionController_generateDappSuggestedGasFees(txParams, origin) {
|
|
1775
1762
|
if (!origin || origin === ORIGIN_METAMASK) {
|
|
1776
1763
|
return undefined;
|
|
@@ -1852,7 +1839,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1852
1839
|
...transactionMeta,
|
|
1853
1840
|
status: TransactionStatus.dropped,
|
|
1854
1841
|
};
|
|
1855
|
-
this.
|
|
1842
|
+
this.messagingSystem.publish(`${controllerName}:transactionDropped`, {
|
|
1856
1843
|
transactionMeta: updatedTransactionMeta,
|
|
1857
1844
|
});
|
|
1858
1845
|
this.updateTransaction(updatedTransactionMeta, 'TransactionController#setTransactionStatusDropped - Transaction dropped');
|
|
@@ -1888,7 +1875,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1888
1875
|
const { authorizationList, from } = txParams;
|
|
1889
1876
|
const signedAuthorizationList = await signAuthorizationList({
|
|
1890
1877
|
authorizationList,
|
|
1891
|
-
messenger: this.
|
|
1878
|
+
messenger: this.messagingSystem,
|
|
1892
1879
|
transactionMeta,
|
|
1893
1880
|
});
|
|
1894
1881
|
if (signedAuthorizationList) {
|
|
@@ -1936,7 +1923,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1936
1923
|
this.updateTransaction(transactionMetaWithRawTx, 'TransactionController#approveTransaction - RawTransaction added');
|
|
1937
1924
|
return rawTx;
|
|
1938
1925
|
}, _TransactionController_onTransactionStatusChange = function _TransactionController_onTransactionStatusChange(transactionMeta) {
|
|
1939
|
-
this.
|
|
1926
|
+
this.messagingSystem.publish(`${controllerName}:transactionStatusUpdated`, {
|
|
1940
1927
|
transactionMeta,
|
|
1941
1928
|
});
|
|
1942
1929
|
}, _TransactionController_getNonceTrackerTransactions = function _TransactionController_getNonceTrackerTransactions(statuses, address, chainId) {
|
|
@@ -1944,7 +1931,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1944
1931
|
}, _TransactionController_onConfirmedTransaction = function _TransactionController_onConfirmedTransaction(transactionMeta) {
|
|
1945
1932
|
log('Processing confirmed transaction', transactionMeta.id);
|
|
1946
1933
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_markNonceDuplicatesDropped).call(this, transactionMeta.id);
|
|
1947
|
-
this.
|
|
1934
|
+
this.messagingSystem.publish(`${controllerName}:transactionConfirmed`, transactionMeta);
|
|
1948
1935
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, transactionMeta);
|
|
1949
1936
|
// Intentional given potential duration of process.
|
|
1950
1937
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updatePostBalance).call(this, transactionMeta).catch((error) => {
|
|
@@ -1963,7 +1950,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1963
1950
|
getTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).bind(this),
|
|
1964
1951
|
updateTransaction: this.updateTransaction.bind(this),
|
|
1965
1952
|
});
|
|
1966
|
-
this.
|
|
1953
|
+
this.messagingSystem.publish(`${controllerName}:postTransactionBalanceUpdated`, {
|
|
1967
1954
|
transactionMeta: updatedTransactionMeta,
|
|
1968
1955
|
approvalTransactionMeta,
|
|
1969
1956
|
});
|
|
@@ -1994,7 +1981,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
1994
1981
|
getGlobalLock: () => __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").acquireNonceLockForChainIdKey({
|
|
1995
1982
|
chainId,
|
|
1996
1983
|
}),
|
|
1997
|
-
messenger: this.
|
|
1984
|
+
messenger: this.messagingSystem,
|
|
1998
1985
|
publishTransaction: (_ethQuery, transactionMeta) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_publishTransaction).call(this, _ethQuery, transactionMeta, {
|
|
1999
1986
|
skipSubmitHistory: true,
|
|
2000
1987
|
}),
|
|
@@ -2083,48 +2070,6 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2083
2070
|
});
|
|
2084
2071
|
}
|
|
2085
2072
|
return transactionMeta;
|
|
2086
|
-
}, _TransactionController_updateFirstTimeInteraction = async function _TransactionController_updateFirstTimeInteraction(transactionMeta, { traceContext, } = {}) {
|
|
2087
|
-
if (!__classPrivateFieldGet(this, _TransactionController_isFirstTimeInteractionEnabled, "f").call(this)) {
|
|
2088
|
-
return;
|
|
2089
|
-
}
|
|
2090
|
-
const { chainId, id: transactionId, txParams: { to, from }, } = transactionMeta;
|
|
2091
|
-
const request = {
|
|
2092
|
-
chainId: hexToNumber(chainId),
|
|
2093
|
-
to: to,
|
|
2094
|
-
from,
|
|
2095
|
-
};
|
|
2096
|
-
validateParamTo(to);
|
|
2097
|
-
const existingTransaction = this.state.transactions.find((tx) => tx.chainId === chainId &&
|
|
2098
|
-
tx.txParams.from === from &&
|
|
2099
|
-
tx.txParams.to === to &&
|
|
2100
|
-
tx.id !== transactionId);
|
|
2101
|
-
// Check if there is an existing transaction with the same from, to, and chainId
|
|
2102
|
-
// else we continue to check the account address relationship from API
|
|
2103
|
-
if (existingTransaction) {
|
|
2104
|
-
return;
|
|
2105
|
-
}
|
|
2106
|
-
try {
|
|
2107
|
-
const { count } = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Account Address Relationship', parentContext: traceContext }, () => getAccountAddressRelationship(request));
|
|
2108
|
-
const isFirstTimeInteraction = count === undefined ? undefined : count === 0;
|
|
2109
|
-
const finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
|
|
2110
|
-
/* istanbul ignore if */
|
|
2111
|
-
if (!finalTransactionMeta) {
|
|
2112
|
-
log('Cannot update first time interaction as transaction not found', transactionId);
|
|
2113
|
-
return;
|
|
2114
|
-
}
|
|
2115
|
-
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
|
|
2116
|
-
transactionId,
|
|
2117
|
-
note: 'TransactionController#updateFirstInteraction - Update first time interaction',
|
|
2118
|
-
}, (txMeta) => {
|
|
2119
|
-
txMeta.isFirstTimeInteraction = isFirstTimeInteraction;
|
|
2120
|
-
});
|
|
2121
|
-
log('Updated first time interaction', transactionId, {
|
|
2122
|
-
isFirstTimeInteraction,
|
|
2123
|
-
});
|
|
2124
|
-
}
|
|
2125
|
-
catch (error) {
|
|
2126
|
-
log('Error fetching account address relationship, skipping first time interaction update', error);
|
|
2127
|
-
}
|
|
2128
2073
|
}, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { blockTime, traceContext, } = {}) {
|
|
2129
2074
|
const { chainId, id: transactionId, nestedTransactions, networkClientId, simulationData: prevSimulationData, txParams, } = transactionMeta;
|
|
2130
2075
|
let simulationData = {
|
|
@@ -2161,7 +2106,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2161
2106
|
chainId,
|
|
2162
2107
|
getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f"),
|
|
2163
2108
|
isEIP7702GasFeeTokensEnabled: __classPrivateFieldGet(this, _TransactionController_isEIP7702GasFeeTokensEnabled, "f"),
|
|
2164
|
-
messenger: this.
|
|
2109
|
+
messenger: this.messagingSystem,
|
|
2165
2110
|
publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
|
|
2166
2111
|
transactionMeta,
|
|
2167
2112
|
});
|
|
@@ -2213,9 +2158,9 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2213
2158
|
state.transactionBatches[index] = updated ?? batch;
|
|
2214
2159
|
});
|
|
2215
2160
|
}, _TransactionController_getSelectedAccount = function _TransactionController_getSelectedAccount() {
|
|
2216
|
-
return this.
|
|
2161
|
+
return this.messagingSystem.call('AccountsController:getSelectedAccount');
|
|
2217
2162
|
}, _TransactionController_getInternalAccounts = function _TransactionController_getInternalAccounts() {
|
|
2218
|
-
const state = this.
|
|
2163
|
+
const state = this.messagingSystem.call('AccountsController:getState');
|
|
2219
2164
|
return Object.values(state.internalAccounts?.accounts ?? {})
|
|
2220
2165
|
.filter((account) => account.type === 'eip155:eoa')
|
|
2221
2166
|
.map((account) => account.address);
|
|
@@ -2255,16 +2200,18 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2255
2200
|
isCustomNetwork,
|
|
2256
2201
|
isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
|
|
2257
2202
|
getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f"),
|
|
2258
|
-
messenger: this.
|
|
2203
|
+
messenger: this.messagingSystem,
|
|
2259
2204
|
txMeta: transactionMeta,
|
|
2260
2205
|
});
|
|
2261
2206
|
}, _TransactionController_registerActionHandlers = function _TransactionController_registerActionHandlers() {
|
|
2262
|
-
this.
|
|
2263
|
-
this.
|
|
2264
|
-
this.
|
|
2265
|
-
this.
|
|
2266
|
-
this.
|
|
2267
|
-
this.
|
|
2207
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:addTransaction`, this.addTransaction.bind(this));
|
|
2208
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:addTransactionBatch`, this.addTransactionBatch.bind(this));
|
|
2209
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:confirmExternalTransaction`, this.confirmExternalTransaction.bind(this));
|
|
2210
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:estimateGas`, this.estimateGas.bind(this));
|
|
2211
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:getNonceLock`, this.getNonceLock.bind(this));
|
|
2212
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:getTransactions`, this.getTransactions.bind(this));
|
|
2213
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:updateCustodialTransaction`, this.updateCustodialTransaction.bind(this));
|
|
2214
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:updateTransaction`, this.updateTransaction.bind(this));
|
|
2268
2215
|
}, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
|
|
2269
2216
|
this.update((state) => {
|
|
2270
2217
|
const transactions = state.transactions.filter(({ id }) => id !== transactionId);
|
|
@@ -2304,13 +2251,13 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
|
|
|
2304
2251
|
error: normalizeTxError(error),
|
|
2305
2252
|
};
|
|
2306
2253
|
}
|
|
2307
|
-
this.
|
|
2254
|
+
this.messagingSystem.publish(`${controllerName}:transactionFailed`, {
|
|
2308
2255
|
actionId,
|
|
2309
2256
|
error: error.message,
|
|
2310
2257
|
transactionMeta: newTransactionMeta,
|
|
2311
2258
|
});
|
|
2312
2259
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, newTransactionMeta);
|
|
2313
|
-
this.
|
|
2260
|
+
this.messagingSystem.publish(`${controllerName}:transactionFinished`, newTransactionMeta);
|
|
2314
2261
|
__classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, newTransactionMeta);
|
|
2315
2262
|
}, _TransactionController_runAfterSimulateHook = async function _TransactionController_runAfterSimulateHook(transactionMeta) {
|
|
2316
2263
|
log('Calling afterSimulate hook', transactionMeta);
|