@metamask-previews/transaction-controller 39.1.0-preview-608079df → 39.1.0-preview-690da12e
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/dist/TransactionController.cjs +43 -103
- package/dist/TransactionController.cjs.map +1 -1
- package/dist/TransactionController.d.cts +78 -11
- package/dist/TransactionController.d.cts.map +1 -1
- package/dist/TransactionController.d.mts +78 -11
- package/dist/TransactionController.d.mts.map +1 -1
- package/dist/TransactionController.mjs +45 -105
- package/dist/TransactionController.mjs.map +1 -1
- package/dist/api/accounts-api.cjs +35 -33
- package/dist/api/accounts-api.cjs.map +1 -1
- package/dist/api/accounts-api.d.cts +42 -35
- package/dist/api/accounts-api.d.cts.map +1 -1
- package/dist/api/accounts-api.d.mts +42 -35
- package/dist/api/accounts-api.d.mts.map +1 -1
- package/dist/api/accounts-api.mjs +33 -31
- package/dist/api/accounts-api.mjs.map +1 -1
- package/dist/constants.cjs +1 -85
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +0 -84
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.mts +0 -84
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.mjs +0 -84
- package/dist/constants.mjs.map +1 -1
- package/dist/errors.cjs +1 -8
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.cts +0 -4
- package/dist/errors.d.cts.map +1 -1
- package/dist/errors.d.mts +0 -4
- package/dist/errors.d.mts.map +1 -1
- package/dist/errors.mjs +0 -6
- package/dist/errors.mjs.map +1 -1
- package/dist/helpers/AccountsApiRemoteTransactionSource.cjs +178 -0
- package/dist/helpers/AccountsApiRemoteTransactionSource.cjs.map +1 -0
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts +12 -0
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts.map +1 -0
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts +12 -0
- package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts.map +1 -0
- package/dist/helpers/AccountsApiRemoteTransactionSource.mjs +178 -0
- package/dist/helpers/AccountsApiRemoteTransactionSource.mjs.map +1 -0
- package/dist/helpers/IncomingTransactionHelper.cjs +68 -139
- package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.cts +9 -16
- package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.d.mts +9 -16
- package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
- package/dist/helpers/IncomingTransactionHelper.mjs +68 -139
- package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.cjs +3 -66
- package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.d.cts +1 -14
- package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.d.mts +1 -14
- package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -1
- package/dist/helpers/MultichainTrackingHelper.mjs +3 -66
- package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
- package/dist/index.cjs +3 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +23 -18
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +23 -18
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/validation.cjs +1 -13
- package/dist/utils/validation.cjs.map +1 -1
- package/dist/utils/validation.d.cts +0 -7
- package/dist/utils/validation.d.cts.map +1 -1
- package/dist/utils/validation.d.mts +0 -7
- package/dist/utils/validation.d.mts.map +1 -1
- package/dist/utils/validation.mjs +0 -11
- package/dist/utils/validation.mjs.map +1 -1
- package/package.json +1 -2
- package/dist/helpers/EtherscanRemoteTransactionSource.cjs +0 -157
- package/dist/helpers/EtherscanRemoteTransactionSource.cjs.map +0 -1
- package/dist/helpers/EtherscanRemoteTransactionSource.d.cts +0 -16
- package/dist/helpers/EtherscanRemoteTransactionSource.d.cts.map +0 -1
- package/dist/helpers/EtherscanRemoteTransactionSource.d.mts +0 -16
- package/dist/helpers/EtherscanRemoteTransactionSource.d.mts.map +0 -1
- package/dist/helpers/EtherscanRemoteTransactionSource.mjs +0 -157
- package/dist/helpers/EtherscanRemoteTransactionSource.mjs.map +0 -1
- package/dist/utils/etherscan.cjs +0 -115
- package/dist/utils/etherscan.cjs.map +0 -1
- package/dist/utils/etherscan.d.cts +0 -74
- package/dist/utils/etherscan.d.cts.map +0 -1
- package/dist/utils/etherscan.d.mts +0 -74
- package/dist/utils/etherscan.d.mts.map +0 -1
- package/dist/utils/etherscan.mjs +0 -109
- package/dist/utils/etherscan.mjs.map +0 -1
|
@@ -9,7 +9,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
11
|
};
|
|
12
|
-
var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit,
|
|
12
|
+
var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_createNonceTracker, _TransactionController_createIncomingTransactionHelper, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_removeIncomingTransactionHelperListeners, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getNetworkClientId, _TransactionController_getGlobalNetworkClientId, _TransactionController_getGlobalChainId, _TransactionController_isCustomNetwork, _TransactionController_getSelectedAccount, _TransactionController_updateSubmitHistory;
|
|
13
13
|
function $importDefault(module) {
|
|
14
14
|
if (module?.__esModule) {
|
|
15
15
|
return module.default;
|
|
@@ -28,20 +28,19 @@ const EthQuery = $importDefault($EthQuery);
|
|
|
28
28
|
import { NetworkClientType } from "@metamask/network-controller";
|
|
29
29
|
import { NonceTracker } from "@metamask/nonce-tracker";
|
|
30
30
|
import { errorCodes, rpcErrors, providerErrors } from "@metamask/rpc-errors";
|
|
31
|
-
import { add0x
|
|
31
|
+
import { add0x } from "@metamask/utils";
|
|
32
32
|
import { Mutex } from "async-mutex";
|
|
33
33
|
import { MethodRegistry } from "eth-method-registry";
|
|
34
34
|
import { EventEmitter } from "events";
|
|
35
35
|
import $lodash from "lodash";
|
|
36
36
|
const { cloneDeep, mapValues, merge, pickBy, sortBy } = $lodash;
|
|
37
37
|
import { v1 as random } from "uuid";
|
|
38
|
-
import { getAccountAddressRelationship } from "./api/accounts-api.mjs";
|
|
39
38
|
import { DefaultGasFeeFlow } from "./gas-flows/DefaultGasFeeFlow.mjs";
|
|
40
39
|
import { LineaGasFeeFlow } from "./gas-flows/LineaGasFeeFlow.mjs";
|
|
41
40
|
import { OptimismLayer1GasFeeFlow } from "./gas-flows/OptimismLayer1GasFeeFlow.mjs";
|
|
42
41
|
import { ScrollLayer1GasFeeFlow } from "./gas-flows/ScrollLayer1GasFeeFlow.mjs";
|
|
43
42
|
import { TestGasFeeFlow } from "./gas-flows/TestGasFeeFlow.mjs";
|
|
44
|
-
import {
|
|
43
|
+
import { AccountsApiRemoteTransactionSource } from "./helpers/AccountsApiRemoteTransactionSource.mjs";
|
|
45
44
|
import { GasFeePoller } from "./helpers/GasFeePoller.mjs";
|
|
46
45
|
import { IncomingTransactionHelper } from "./helpers/IncomingTransactionHelper.mjs";
|
|
47
46
|
import { MultichainTrackingHelper } from "./helpers/MultichainTrackingHelper.mjs";
|
|
@@ -61,7 +60,7 @@ import { getSimulationData } from "./utils/simulation.mjs";
|
|
|
61
60
|
import { updatePostTransactionBalance, updateSwapsTransaction } from "./utils/swaps.mjs";
|
|
62
61
|
import { determineTransactionType } from "./utils/transaction-type.mjs";
|
|
63
62
|
import { normalizeTransactionParams, isEIP1559Transaction, validateGasValues, validateIfTransactionUnapproved, normalizeTxError, normalizeGasFeeValues } from "./utils/utils.mjs";
|
|
64
|
-
import {
|
|
63
|
+
import { validateTransactionOrigin, validateTxParams } from "./utils/validation.mjs";
|
|
65
64
|
/**
|
|
66
65
|
* Metadata for the TransactionController state, describing how to "anonymize"
|
|
67
66
|
* the state and which parts should be persisted.
|
|
@@ -182,7 +181,6 @@ export class TransactionController extends BaseController {
|
|
|
182
181
|
* @param options.getSavedGasFees - Gets the saved gas fee config.
|
|
183
182
|
* @param options.incomingTransactions - Configuration options for incoming transaction support.
|
|
184
183
|
* @param options.isMultichainEnabled - Enable multichain support.
|
|
185
|
-
* @param options.isFirstTimeInteractionEnabled - Whether first time interaction checks are enabled.
|
|
186
184
|
* @param options.isSimulationEnabled - Whether new transactions will be automatically simulated.
|
|
187
185
|
* @param options.messenger - The controller messenger.
|
|
188
186
|
* @param options.onNetworkStateChange - Allows subscribing to network controller state changes.
|
|
@@ -196,7 +194,7 @@ export class TransactionController extends BaseController {
|
|
|
196
194
|
* @param options.transactionHistoryLimit - Transaction history limit.
|
|
197
195
|
* @param options.hooks - The controller hooks.
|
|
198
196
|
*/
|
|
199
|
-
constructor({ blockTracker, disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isMultichainEnabled = false,
|
|
197
|
+
constructor({ blockTracker, disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isMultichainEnabled = false, isSimulationEnabled, messenger, onNetworkStateChange, pendingTransactions = {}, provider, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, }) {
|
|
200
198
|
super({
|
|
201
199
|
name: controllerName,
|
|
202
200
|
metadata,
|
|
@@ -215,7 +213,6 @@ export class TransactionController extends BaseController {
|
|
|
215
213
|
this.signAbortCallbacks = new Map();
|
|
216
214
|
_TransactionController_trace.set(this, void 0);
|
|
217
215
|
_TransactionController_transactionHistoryLimit.set(this, void 0);
|
|
218
|
-
_TransactionController_isFirstTimeInteractionEnabled.set(this, void 0);
|
|
219
216
|
_TransactionController_isSimulationEnabled.set(this, void 0);
|
|
220
217
|
_TransactionController_testGasFeeFlows.set(this, void 0);
|
|
221
218
|
_TransactionController_multichainTrackingHelper.set(this, void 0);
|
|
@@ -229,7 +226,6 @@ export class TransactionController extends BaseController {
|
|
|
229
226
|
this.isSendFlowHistoryDisabled = disableSendFlowHistory ?? false;
|
|
230
227
|
this.isHistoryDisabled = disableHistory ?? false;
|
|
231
228
|
this.isSwapsDisabled = disableSwaps ?? false;
|
|
232
|
-
__classPrivateFieldSet(this, _TransactionController_isFirstTimeInteractionEnabled, isFirstTimeInteractionEnabled ?? (() => true), "f");
|
|
233
229
|
__classPrivateFieldSet(this, _TransactionController_isSimulationEnabled, isSimulationEnabled ?? (() => true), "f");
|
|
234
230
|
// @ts-expect-error the type in eth-method-registry is inappropriate and should be changed
|
|
235
231
|
this.registry = new MethodRegistry({ provider });
|
|
@@ -271,30 +267,20 @@ export class TransactionController extends BaseController {
|
|
|
271
267
|
isMultichainEnabled,
|
|
272
268
|
provider,
|
|
273
269
|
nonceTracker: this.nonceTracker,
|
|
274
|
-
incomingTransactionOptions: incomingTransactions,
|
|
275
270
|
findNetworkClientIdByChainId,
|
|
276
271
|
getNetworkClientById: ((networkClientId) => {
|
|
277
272
|
return this.messagingSystem.call(`NetworkController:getNetworkClientById`, networkClientId);
|
|
278
273
|
}),
|
|
279
274
|
getNetworkClientRegistry,
|
|
280
|
-
removeIncomingTransactionHelperListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removeIncomingTransactionHelperListeners).bind(this),
|
|
281
275
|
removePendingTransactionTrackerListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removePendingTransactionTrackerListeners).bind(this),
|
|
282
276
|
createNonceTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createNonceTracker).bind(this),
|
|
283
|
-
createIncomingTransactionHelper: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createIncomingTransactionHelper).bind(this),
|
|
284
277
|
createPendingTransactionTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).bind(this),
|
|
285
278
|
onNetworkStateChange: (listener) => {
|
|
286
279
|
this.messagingSystem.subscribe('NetworkController:stateChange', listener);
|
|
287
280
|
},
|
|
288
281
|
}), "f");
|
|
289
282
|
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").initialize();
|
|
290
|
-
|
|
291
|
-
apiKeysByChainId: incomingTransactions.etherscanApiKeysByChainId,
|
|
292
|
-
includeTokenTransfers: incomingTransactions.includeTokenTransfers,
|
|
293
|
-
});
|
|
294
|
-
this.incomingTransactionHelper = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createIncomingTransactionHelper).call(this, {
|
|
295
|
-
blockTracker,
|
|
296
|
-
etherscanRemoteTransactionSource,
|
|
297
|
-
});
|
|
283
|
+
this.incomingTransactionHelper = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createIncomingTransactionHelper).call(this);
|
|
298
284
|
this.pendingTransactionTracker = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).call(this, {
|
|
299
285
|
provider,
|
|
300
286
|
blockTracker,
|
|
@@ -411,16 +397,15 @@ export class TransactionController extends BaseController {
|
|
|
411
397
|
dappSuggestedGasFees,
|
|
412
398
|
deviceConfirmedOn,
|
|
413
399
|
id: random(),
|
|
414
|
-
isFirstTimeInteraction: undefined,
|
|
415
|
-
networkClientId,
|
|
416
400
|
origin,
|
|
417
401
|
securityAlertResponse,
|
|
418
402
|
status: TransactionStatus.unapproved,
|
|
419
403
|
time: Date.now(),
|
|
420
404
|
txParams,
|
|
421
|
-
type: transactionType,
|
|
422
405
|
userEditedGasLimit: false,
|
|
423
406
|
verifiedOnBlockchain: false,
|
|
407
|
+
type: transactionType,
|
|
408
|
+
networkClientId,
|
|
424
409
|
};
|
|
425
410
|
await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Estimate Gas Properties', parentContext: traceContext }, (context) => this.updateGasProperties(addedTransactionMeta, {
|
|
426
411
|
traceContext: context,
|
|
@@ -453,14 +438,9 @@ export class TransactionController extends BaseController {
|
|
|
453
438
|
log('Error while updating simulation data', error);
|
|
454
439
|
throw error;
|
|
455
440
|
});
|
|
456
|
-
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateFirstTimeInteraction).call(this, addedTransactionMeta, {
|
|
457
|
-
traceContext,
|
|
458
|
-
}).catch((error) => {
|
|
459
|
-
log('Error while updating first interaction properties', error);
|
|
460
|
-
});
|
|
461
441
|
}
|
|
462
442
|
else {
|
|
463
|
-
log('Skipping simulation
|
|
443
|
+
log('Skipping simulation as approval not required');
|
|
464
444
|
}
|
|
465
445
|
this.messagingSystem.publish(`${controllerName}:unapprovedTransactionAdded`, addedTransactionMeta);
|
|
466
446
|
}
|
|
@@ -477,27 +457,20 @@ export class TransactionController extends BaseController {
|
|
|
477
457
|
startIncomingTransactionPolling(networkClientIds = []) {
|
|
478
458
|
if (networkClientIds.length === 0) {
|
|
479
459
|
this.incomingTransactionHelper.start();
|
|
480
|
-
return;
|
|
481
460
|
}
|
|
482
|
-
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").startIncomingTransactionPolling(networkClientIds);
|
|
483
461
|
}
|
|
484
462
|
stopIncomingTransactionPolling(networkClientIds = []) {
|
|
485
463
|
if (networkClientIds.length === 0) {
|
|
486
464
|
this.incomingTransactionHelper.stop();
|
|
487
|
-
return;
|
|
488
465
|
}
|
|
489
|
-
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopIncomingTransactionPolling(networkClientIds);
|
|
490
466
|
}
|
|
491
467
|
stopAllIncomingTransactionPolling() {
|
|
492
468
|
this.incomingTransactionHelper.stop();
|
|
493
|
-
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopAllIncomingTransactionPolling();
|
|
494
469
|
}
|
|
495
470
|
async updateIncomingTransactions(networkClientIds = []) {
|
|
496
471
|
if (networkClientIds.length === 0) {
|
|
497
472
|
await this.incomingTransactionHelper.update();
|
|
498
|
-
return;
|
|
499
473
|
}
|
|
500
|
-
await __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").updateIncomingTransactions(networkClientIds);
|
|
501
474
|
}
|
|
502
475
|
/**
|
|
503
476
|
* Attempts to cancel a transaction based on its ID by setting its status to "rejected"
|
|
@@ -625,23 +598,33 @@ export class TransactionController extends BaseController {
|
|
|
625
598
|
* wiped on current network.
|
|
626
599
|
*/
|
|
627
600
|
wipeTransactions(ignoreNetwork, address) {
|
|
601
|
+
log('Wiping transactions', { ignoreNetwork, address });
|
|
628
602
|
/* istanbul ignore next */
|
|
629
603
|
if (ignoreNetwork && !address) {
|
|
630
604
|
this.update((state) => {
|
|
631
605
|
state.transactions = [];
|
|
606
|
+
state.lastFetchedBlockNumbers = {};
|
|
632
607
|
});
|
|
633
608
|
return;
|
|
634
609
|
}
|
|
635
610
|
const currentChainId = this.getChainId();
|
|
636
|
-
const
|
|
611
|
+
const { transactions } = this.state;
|
|
612
|
+
const newTransactions = transactions.filter((tx) => {
|
|
613
|
+
const { chainId, txParams } = tx;
|
|
637
614
|
const isMatchingNetwork = ignoreNetwork || chainId === currentChainId;
|
|
638
615
|
if (!isMatchingNetwork) {
|
|
639
616
|
return true;
|
|
640
617
|
}
|
|
641
|
-
const isMatchingAddress = !address ||
|
|
618
|
+
const isMatchingAddress = !address ||
|
|
619
|
+
txParams.from?.toLowerCase() === address.toLowerCase() ||
|
|
620
|
+
txParams.to?.toLowerCase() === address.toLowerCase();
|
|
621
|
+
if (isMatchingAddress) {
|
|
622
|
+
log('Removing transaction', tx);
|
|
623
|
+
}
|
|
642
624
|
return !isMatchingAddress;
|
|
643
625
|
});
|
|
644
626
|
this.update((state) => {
|
|
627
|
+
state.lastFetchedBlockNumbers = {};
|
|
645
628
|
state.transactions = this.trimTransactionsForState(newTransactions);
|
|
646
629
|
});
|
|
647
630
|
}
|
|
@@ -1532,24 +1515,20 @@ export class TransactionController extends BaseController {
|
|
|
1532
1515
|
};
|
|
1533
1516
|
return Common.custom(customChainParams);
|
|
1534
1517
|
}
|
|
1535
|
-
onIncomingTransactions(
|
|
1518
|
+
onIncomingTransactions(transactions) {
|
|
1536
1519
|
this.update((state) => {
|
|
1537
1520
|
const { transactions: currentTransactions } = state;
|
|
1538
|
-
const
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
}
|
|
1548
|
-
onUpdatedLastFetchedBlockNumbers({ lastFetchedBlockNumbers, blockNumber, }) {
|
|
1549
|
-
this.update((state) => {
|
|
1550
|
-
state.lastFetchedBlockNumbers = lastFetchedBlockNumbers;
|
|
1521
|
+
const newTransactions = transactions.filter((tx) => !currentTransactions.some((currentTx) => currentTx.hash?.toLowerCase() === tx.hash?.toLowerCase() &&
|
|
1522
|
+
currentTx.type === TransactionType.incoming));
|
|
1523
|
+
log('Adding incoming transactions to state', newTransactions.length, {
|
|
1524
|
+
newTransactions,
|
|
1525
|
+
});
|
|
1526
|
+
state.transactions = this.trimTransactionsForState([
|
|
1527
|
+
...newTransactions,
|
|
1528
|
+
...currentTransactions,
|
|
1529
|
+
]);
|
|
1551
1530
|
});
|
|
1552
|
-
this.messagingSystem.publish(`${controllerName}:
|
|
1531
|
+
this.messagingSystem.publish(`${controllerName}:incomingTransactionsReceived`, transactions);
|
|
1553
1532
|
}
|
|
1554
1533
|
generateDappSuggestedGasFees(txParams, origin) {
|
|
1555
1534
|
if (!origin || origin === ORIGIN_METAMASK) {
|
|
@@ -1798,7 +1777,7 @@ export class TransactionController extends BaseController {
|
|
|
1798
1777
|
error?.data?.message?.includes('nonce too low'));
|
|
1799
1778
|
}
|
|
1800
1779
|
}
|
|
1801
|
-
_TransactionController_internalEvents = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(),
|
|
1780
|
+
_TransactionController_internalEvents = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = 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, }) {
|
|
1802
1781
|
// If transaction is found for same action id, do not create a new transaction.
|
|
1803
1782
|
if (this.getTransactionWithActionId(actionId)) {
|
|
1804
1783
|
return;
|
|
@@ -1875,17 +1854,21 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
|
|
|
1875
1854
|
getPendingTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNonceTrackerPendingTransactions).bind(this, chainId),
|
|
1876
1855
|
getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, TransactionStatus.confirmed),
|
|
1877
1856
|
});
|
|
1878
|
-
}, _TransactionController_createIncomingTransactionHelper = function _TransactionController_createIncomingTransactionHelper({
|
|
1857
|
+
}, _TransactionController_createIncomingTransactionHelper = function _TransactionController_createIncomingTransactionHelper({ chainId, } = {}) {
|
|
1858
|
+
const updateCache = (fn) => {
|
|
1859
|
+
this.update((state) => {
|
|
1860
|
+
fn(state.lastFetchedBlockNumbers);
|
|
1861
|
+
});
|
|
1862
|
+
};
|
|
1879
1863
|
const incomingTransactionHelper = new IncomingTransactionHelper({
|
|
1880
|
-
blockTracker,
|
|
1881
1864
|
getCurrentAccount: () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getSelectedAccount).call(this),
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1865
|
+
getCache: () => this.state.lastFetchedBlockNumbers,
|
|
1866
|
+
getChainIds: chainId ? () => [chainId] : () => [this.getChainId()],
|
|
1867
|
+
includeTokenTransfers: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").includeTokenTransfers,
|
|
1885
1868
|
isEnabled: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").isEnabled,
|
|
1886
1869
|
queryEntireHistory: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").queryEntireHistory,
|
|
1887
|
-
remoteTransactionSource:
|
|
1888
|
-
|
|
1870
|
+
remoteTransactionSource: new AccountsApiRemoteTransactionSource(),
|
|
1871
|
+
updateCache,
|
|
1889
1872
|
updateTransactions: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").updateTransactions,
|
|
1890
1873
|
});
|
|
1891
1874
|
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addIncomingTransactionHelperListeners).call(this, incomingTransactionHelper);
|
|
@@ -1920,10 +1903,9 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
|
|
|
1920
1903
|
__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopAllTracking();
|
|
1921
1904
|
}, _TransactionController_removeIncomingTransactionHelperListeners = function _TransactionController_removeIncomingTransactionHelperListeners(incomingTransactionHelper) {
|
|
1922
1905
|
incomingTransactionHelper.hub.removeAllListeners('transactions');
|
|
1923
|
-
incomingTransactionHelper.hub.removeAllListeners('
|
|
1906
|
+
incomingTransactionHelper.hub.removeAllListeners('updated-last-fetched-timestamp');
|
|
1924
1907
|
}, _TransactionController_addIncomingTransactionHelperListeners = function _TransactionController_addIncomingTransactionHelperListeners(incomingTransactionHelper) {
|
|
1925
1908
|
incomingTransactionHelper.hub.on('transactions', this.onIncomingTransactions.bind(this));
|
|
1926
|
-
incomingTransactionHelper.hub.on('updatedLastFetchedBlockNumbers', this.onUpdatedLastFetchedBlockNumbers.bind(this));
|
|
1927
1909
|
}, _TransactionController_removePendingTransactionTrackerListeners = function _TransactionController_removePendingTransactionTrackerListeners(pendingTransactionTracker) {
|
|
1928
1910
|
pendingTransactionTracker.hub.removeAllListeners('transaction-confirmed');
|
|
1929
1911
|
pendingTransactionTracker.hub.removeAllListeners('transaction-dropped');
|
|
@@ -1976,48 +1958,6 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
|
|
|
1976
1958
|
});
|
|
1977
1959
|
}
|
|
1978
1960
|
return transactionMeta;
|
|
1979
|
-
}, _TransactionController_updateFirstTimeInteraction = async function _TransactionController_updateFirstTimeInteraction(transactionMeta, { traceContext, } = {}) {
|
|
1980
|
-
if (!__classPrivateFieldGet(this, _TransactionController_isFirstTimeInteractionEnabled, "f").call(this)) {
|
|
1981
|
-
return;
|
|
1982
|
-
}
|
|
1983
|
-
const { chainId, id: transactionId, txParams: { to, from }, } = transactionMeta;
|
|
1984
|
-
const request = {
|
|
1985
|
-
chainId: hexToNumber(chainId),
|
|
1986
|
-
to: to,
|
|
1987
|
-
from,
|
|
1988
|
-
};
|
|
1989
|
-
validateParamTo(to);
|
|
1990
|
-
const existingTransaction = this.state.transactions.find((tx) => tx.chainId === chainId &&
|
|
1991
|
-
tx.txParams.from === from &&
|
|
1992
|
-
tx.txParams.to === to &&
|
|
1993
|
-
tx.id !== transactionId);
|
|
1994
|
-
// Check if there is an existing transaction with the same from, to, and chainId
|
|
1995
|
-
// else we continue to check the account address relationship from API
|
|
1996
|
-
if (existingTransaction) {
|
|
1997
|
-
return;
|
|
1998
|
-
}
|
|
1999
|
-
try {
|
|
2000
|
-
const { count } = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Account Address Relationship', parentContext: traceContext }, () => getAccountAddressRelationship(request));
|
|
2001
|
-
const isFirstTimeInteraction = count === undefined ? undefined : count === 0;
|
|
2002
|
-
const finalTransactionMeta = this.getTransaction(transactionId);
|
|
2003
|
-
/* istanbul ignore if */
|
|
2004
|
-
if (!finalTransactionMeta) {
|
|
2005
|
-
log('Cannot update first time interaction as transaction not found', transactionId);
|
|
2006
|
-
return;
|
|
2007
|
-
}
|
|
2008
|
-
__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
|
|
2009
|
-
transactionId,
|
|
2010
|
-
note: 'TransactionController#updateFirstInteraction - Update first time interaction',
|
|
2011
|
-
}, (txMeta) => {
|
|
2012
|
-
txMeta.isFirstTimeInteraction = isFirstTimeInteraction;
|
|
2013
|
-
});
|
|
2014
|
-
log('Updated first time interaction', transactionId, {
|
|
2015
|
-
isFirstTimeInteraction,
|
|
2016
|
-
});
|
|
2017
|
-
}
|
|
2018
|
-
catch (error) {
|
|
2019
|
-
log('Error fetching account address relationship, skipping first time interaction update', error);
|
|
2020
|
-
}
|
|
2021
1961
|
}, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { blockTime, traceContext, } = {}) {
|
|
2022
1962
|
const { id: transactionId, chainId, txParams, simulationData: prevSimulationData, } = transactionMeta;
|
|
2023
1963
|
const { from, to, value, data } = txParams;
|