@metamask-previews/bridge-status-controller 33.0.0-preview-6fc9506d → 34.0.0-preview-52f43d2
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 +13 -1
- package/dist/bridge-status-controller.cjs +104 -77
- package/dist/bridge-status-controller.cjs.map +1 -1
- package/dist/bridge-status-controller.d.cts +3 -1
- package/dist/bridge-status-controller.d.cts.map +1 -1
- package/dist/bridge-status-controller.d.mts +3 -1
- package/dist/bridge-status-controller.d.mts.map +1 -1
- package/dist/bridge-status-controller.mjs +106 -79
- package/dist/bridge-status-controller.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +1 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/gas.cjs +34 -1
- package/dist/utils/gas.cjs.map +1 -1
- package/dist/utils/gas.d.cts +7 -0
- package/dist/utils/gas.d.cts.map +1 -1
- package/dist/utils/gas.d.mts +7 -0
- package/dist/utils/gas.d.mts.map +1 -1
- package/dist/utils/gas.mjs +32 -0
- package/dist/utils/gas.mjs.map +1 -1
- package/dist/utils/metrics.cjs +9 -4
- package/dist/utils/metrics.cjs.map +1 -1
- package/dist/utils/metrics.d.cts +1 -1
- package/dist/utils/metrics.d.cts.map +1 -1
- package/dist/utils/metrics.d.mts +1 -1
- package/dist/utils/metrics.d.mts.map +1 -1
- package/dist/utils/metrics.mjs +9 -4
- package/dist/utils/metrics.mjs.map +1 -1
- package/dist/utils/transaction.cjs +100 -1
- package/dist/utils/transaction.cjs.map +1 -1
- package/dist/utils/transaction.d.cts +80 -2
- package/dist/utils/transaction.d.cts.map +1 -1
- package/dist/utils/transaction.d.mts +80 -2
- package/dist/utils/transaction.d.mts.map +1 -1
- package/dist/utils/transaction.mjs +96 -1
- package/dist/utils/transaction.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -7,8 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [34.0.0]
|
11
|
+
|
12
|
+
### Added
|
13
|
+
|
14
|
+
- Add `batchId` to BridgeHistoryItem to enable querying history by batchId ([#6058](https://github.com/MetaMask/core/pull/6058))
|
15
|
+
|
10
16
|
### Changed
|
11
17
|
|
18
|
+
- **BREAKING** Add tx batching functionality, which requires an `addTransactionBatchFn` handler to be passed to the BridgeStatusController's constructor ([#6058](https://github.com/MetaMask/core/pull/6058))
|
19
|
+
- **BREAKING** Update batched txs after signing with correct tx types, which requires an `updateTransactionFn` handler to be passed to the BridgeStatusController's constructor ([#6058](https://github.com/MetaMask/core/pull/6058))
|
20
|
+
- Add approvalTxId to txHistoryItem after signing batched transaction ([#6058](https://github.com/MetaMask/core/pull/6058))
|
21
|
+
- Remove `addUserOperationFromTransaction` tx submission code and constructor arg since it is unsupported ([#6057](https://github.com/MetaMask/core/pull/6057))
|
22
|
+
- Remove @metamask/user-operation-controller dependency ([#6057](https://github.com/MetaMask/core/pull/6057))
|
12
23
|
- **BREAKING:** Bump peer dependency `@metamask/snaps-controllers` from `^12.0.0` to `^14.0.0` ([#6035](https://github.com/MetaMask/core/pull/6035))
|
13
24
|
|
14
25
|
### Fixed
|
@@ -385,7 +396,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
385
396
|
|
386
397
|
- Initial release ([#5317](https://github.com/MetaMask/core/pull/5317))
|
387
398
|
|
388
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@
|
399
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@34.0.0...HEAD
|
400
|
+
[34.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@33.0.0...@metamask/bridge-status-controller@34.0.0
|
389
401
|
[33.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@32.0.0...@metamask/bridge-status-controller@33.0.0
|
390
402
|
[32.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@31.0.0...@metamask/bridge-status-controller@32.0.0
|
391
403
|
[31.0.0]: https://github.com/MetaMask/core/compare/@metamask/bridge-status-controller@30.0.0...@metamask/bridge-status-controller@31.0.0
|
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
10
10
|
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");
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
12
12
|
};
|
13
|
-
var _BridgeStatusController_instances, _BridgeStatusController_pollingTokensByTxMetaId, _BridgeStatusController_clientId, _BridgeStatusController_fetchFn, _BridgeStatusController_config, _BridgeStatusController_addTransactionFn, _BridgeStatusController_estimateGasFeeFn, _BridgeStatusController_trace, _BridgeStatusController_restartPollingForIncompleteHistoryItems, _BridgeStatusController_addTxToHistory, _BridgeStatusController_startPollingForTxId, _BridgeStatusController_getMultichainSelectedAccount, _BridgeStatusController_getMultichainSelectedAccountAddress, _BridgeStatusController_fetchBridgeTxStatus, _BridgeStatusController_getSrcTxHash, _BridgeStatusController_updateSrcTxHash, _BridgeStatusController_wipeBridgeStatusByChainId, _BridgeStatusController_handleSolanaTx, _BridgeStatusController_waitForHashAndReturnFinalTxMeta, _BridgeStatusController_handleApprovalTx,
|
13
|
+
var _BridgeStatusController_instances, _BridgeStatusController_pollingTokensByTxMetaId, _BridgeStatusController_clientId, _BridgeStatusController_fetchFn, _BridgeStatusController_config, _BridgeStatusController_addTransactionFn, _BridgeStatusController_addTransactionBatchFn, _BridgeStatusController_updateTransactionFn, _BridgeStatusController_estimateGasFeeFn, _BridgeStatusController_trace, _BridgeStatusController_markTxAsFailed, _BridgeStatusController_restartPollingForIncompleteHistoryItems, _BridgeStatusController_addTxToHistory, _BridgeStatusController_startPollingForTxId, _BridgeStatusController_getMultichainSelectedAccount, _BridgeStatusController_getMultichainSelectedAccountAddress, _BridgeStatusController_fetchBridgeTxStatus, _BridgeStatusController_getSrcTxHash, _BridgeStatusController_updateSrcTxHash, _BridgeStatusController_wipeBridgeStatusByChainId, _BridgeStatusController_handleSolanaTx, _BridgeStatusController_waitForHashAndReturnFinalTxMeta, _BridgeStatusController_handleApprovalTx, _BridgeStatusController_handleEvmTransaction, _BridgeStatusController_handleUSDTAllowanceReset, _BridgeStatusController_calculateGasFees, _BridgeStatusController_handleEvmTransactionBatch, _BridgeStatusController_trackUnifiedSwapBridgeEvent;
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
15
|
exports.BridgeStatusController = void 0;
|
16
16
|
const bridge_controller_1 = require("@metamask/bridge-controller");
|
@@ -19,7 +19,6 @@ const keyring_api_1 = require("@metamask/keyring-api");
|
|
19
19
|
const polling_controller_1 = require("@metamask/polling-controller");
|
20
20
|
const transaction_controller_1 = require("@metamask/transaction-controller");
|
21
21
|
const utils_1 = require("@metamask/utils");
|
22
|
-
const bignumber_js_1 = require("bignumber.js");
|
23
22
|
const constants_1 = require("./constants.cjs");
|
24
23
|
const types_1 = require("./types.cjs");
|
25
24
|
const bridge_status_1 = require("./utils/bridge-status.cjs");
|
@@ -36,7 +35,7 @@ const metadata = {
|
|
36
35
|
},
|
37
36
|
};
|
38
37
|
class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPollingController)() {
|
39
|
-
constructor({ messenger, state, clientId, fetchFn, addTransactionFn, estimateGasFeeFn, config, traceFn, }) {
|
38
|
+
constructor({ messenger, state, clientId, fetchFn, addTransactionFn, addTransactionBatchFn, updateTransactionFn, estimateGasFeeFn, config, traceFn, }) {
|
40
39
|
super({
|
41
40
|
name: constants_1.BRIDGE_STATUS_CONTROLLER_NAME,
|
42
41
|
metadata,
|
@@ -53,8 +52,22 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
53
52
|
_BridgeStatusController_fetchFn.set(this, void 0);
|
54
53
|
_BridgeStatusController_config.set(this, void 0);
|
55
54
|
_BridgeStatusController_addTransactionFn.set(this, void 0);
|
55
|
+
_BridgeStatusController_addTransactionBatchFn.set(this, void 0);
|
56
|
+
_BridgeStatusController_updateTransactionFn.set(this, void 0);
|
56
57
|
_BridgeStatusController_estimateGasFeeFn.set(this, void 0);
|
57
58
|
_BridgeStatusController_trace.set(this, void 0);
|
59
|
+
// Mark tx as failed in txHistory if either the approval or trade fails
|
60
|
+
_BridgeStatusController_markTxAsFailed.set(this, ({ id }) => {
|
61
|
+
const txHistoryKey = this.state.txHistory[id]
|
62
|
+
? id
|
63
|
+
: Object.keys(this.state.txHistory).find((key) => this.state.txHistory[key].approvalTxId === id);
|
64
|
+
if (!txHistoryKey) {
|
65
|
+
return;
|
66
|
+
}
|
67
|
+
this.update((statusState) => {
|
68
|
+
statusState.txHistory[txHistoryKey].status.status = bridge_controller_1.StatusTypes.FAILED;
|
69
|
+
});
|
70
|
+
});
|
58
71
|
this.resetState = () => {
|
59
72
|
this.update((state) => {
|
60
73
|
state.txHistory = constants_1.DEFAULT_BRIDGE_STATUS_CONTROLLER_STATE.txHistory;
|
@@ -83,8 +96,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
83
96
|
historyItem.status.status === bridge_controller_1.StatusTypes.UNKNOWN)
|
84
97
|
.filter((historyItem) => {
|
85
98
|
// Check if we are already polling this tx, if so, skip restarting polling for that
|
86
|
-
const
|
87
|
-
const pollingToken = __classPrivateFieldGet(this, _BridgeStatusController_pollingTokensByTxMetaId, "f")[srcTxMetaId];
|
99
|
+
const pollingToken = __classPrivateFieldGet(this, _BridgeStatusController_pollingTokensByTxMetaId, "f")[historyItem.txMetaId];
|
88
100
|
return !pollingToken;
|
89
101
|
})
|
90
102
|
// Swap txs don't need to have their statuses polled
|
@@ -106,6 +118,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
106
118
|
// We know it's in progress but not the exact status yet
|
107
119
|
const txHistoryItem = {
|
108
120
|
txMetaId: bridgeTxMeta.id,
|
121
|
+
batchId: bridgeTxMeta.batchId,
|
109
122
|
quote: quoteResponse.quote,
|
110
123
|
startTime,
|
111
124
|
estimatedProcessingTimeInSeconds: quoteResponse.estimatedProcessingTimeInSeconds,
|
@@ -304,7 +317,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
304
317
|
}
|
305
318
|
return finalTransactionMeta;
|
306
319
|
});
|
307
|
-
_BridgeStatusController_handleApprovalTx.set(this, async (isBridgeTx, quoteResponse
|
320
|
+
_BridgeStatusController_handleApprovalTx.set(this, async (isBridgeTx, quoteResponse) => {
|
308
321
|
const { approval } = quoteResponse;
|
309
322
|
if (approval) {
|
310
323
|
const approveTx = async () => {
|
@@ -314,8 +327,6 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
314
327
|
? transaction_controller_1.TransactionType.bridgeApproval
|
315
328
|
: transaction_controller_1.TransactionType.swapApproval,
|
316
329
|
trade: approval,
|
317
|
-
quoteResponse,
|
318
|
-
requireApproval,
|
319
330
|
});
|
320
331
|
await (0, transaction_1.handleLineaDelay)(quoteResponse);
|
321
332
|
return approvalTxMeta;
|
@@ -332,31 +343,16 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
332
343
|
}
|
333
344
|
return undefined;
|
334
345
|
});
|
335
|
-
_BridgeStatusController_handleEvmSmartTransaction.set(this, async ({ isBridgeTx, trade, quoteResponse, approvalTxId, requireApproval = false, }) => {
|
336
|
-
return await __classPrivateFieldGet(this, _BridgeStatusController_handleEvmTransaction, "f").call(this, {
|
337
|
-
transactionType: isBridgeTx
|
338
|
-
? transaction_controller_1.TransactionType.bridge
|
339
|
-
: transaction_controller_1.TransactionType.swap,
|
340
|
-
trade,
|
341
|
-
quoteResponse,
|
342
|
-
approvalTxId,
|
343
|
-
shouldWaitForHash: false,
|
344
|
-
requireApproval,
|
345
|
-
});
|
346
|
-
});
|
347
346
|
/**
|
348
347
|
* Submits an EVM transaction to the TransactionController
|
349
348
|
*
|
350
349
|
* @param params - The parameters for the transaction
|
351
350
|
* @param params.transactionType - The type of transaction to submit
|
352
351
|
* @param params.trade - The trade data to confirm
|
353
|
-
* @param params.quoteResponse - The quote response
|
354
|
-
* @param params.approvalTxId - The tx id of the approval tx
|
355
|
-
* @param params.shouldWaitForHash - Whether to wait for the hash of the transaction
|
356
352
|
* @param params.requireApproval - Whether to require approval for the transaction
|
357
353
|
* @returns The transaction meta
|
358
354
|
*/
|
359
|
-
_BridgeStatusController_handleEvmTransaction.set(this, async ({ transactionType, trade,
|
355
|
+
_BridgeStatusController_handleEvmTransaction.set(this, async ({ transactionType, trade, requireApproval = false, }) => {
|
360
356
|
const actionId = (0, transaction_2.generateActionId)().toString();
|
361
357
|
const selectedAccount = this.messagingSystem.call('AccountsController:getAccountByAddress', trade.from);
|
362
358
|
if (!selectedAccount) {
|
@@ -381,28 +377,16 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
381
377
|
...transactionParams,
|
382
378
|
...(await __classPrivateFieldGet(this, _BridgeStatusController_calculateGasFees, "f").call(this, transactionParams, networkClientId, hexChainId)),
|
383
379
|
};
|
384
|
-
const { result
|
385
|
-
|
386
|
-
return await __classPrivateFieldGet(this, _BridgeStatusController_waitForHashAndReturnFinalTxMeta, "f").call(this, result);
|
387
|
-
}
|
388
|
-
return {
|
389
|
-
...(0, transaction_1.getTxMetaFields)(quoteResponse, approvalTxId),
|
390
|
-
...transactionMeta,
|
391
|
-
};
|
380
|
+
const { result } = await __classPrivateFieldGet(this, _BridgeStatusController_addTransactionFn, "f").call(this, transactionParamsWithMaxGas, requestOptions);
|
381
|
+
return await __classPrivateFieldGet(this, _BridgeStatusController_waitForHashAndReturnFinalTxMeta, "f").call(this, result);
|
392
382
|
});
|
393
383
|
_BridgeStatusController_handleUSDTAllowanceReset.set(this, async (quoteResponse) => {
|
394
|
-
const
|
395
|
-
if (
|
396
|
-
(
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
await __classPrivateFieldGet(this, _BridgeStatusController_handleEvmTransaction, "f").call(this, {
|
401
|
-
transactionType: transaction_controller_1.TransactionType.bridgeApproval,
|
402
|
-
trade: { ...quoteResponse.approval, data: (0, bridge_controller_1.getEthUsdtResetData)() },
|
403
|
-
quoteResponse,
|
404
|
-
});
|
405
|
-
}
|
384
|
+
const resetApproval = await (0, transaction_1.getUSDTAllowanceResetTx)(this.messagingSystem, quoteResponse);
|
385
|
+
if (resetApproval) {
|
386
|
+
await __classPrivateFieldGet(this, _BridgeStatusController_handleEvmTransaction, "f").call(this, {
|
387
|
+
transactionType: transaction_controller_1.TransactionType.bridgeApproval,
|
388
|
+
trade: resetApproval,
|
389
|
+
});
|
406
390
|
}
|
407
391
|
});
|
408
392
|
_BridgeStatusController_calculateGasFees.set(this, async (transactionParams, networkClientId, chainId) => {
|
@@ -423,6 +407,42 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
423
407
|
gas: maxGasLimit,
|
424
408
|
};
|
425
409
|
});
|
410
|
+
/**
|
411
|
+
* Submits batched EVM transactions to the TransactionController
|
412
|
+
*
|
413
|
+
* @param args - The parameters for the transaction
|
414
|
+
* @param args.isBridgeTx - Whether the transaction is a bridge transaction
|
415
|
+
* @param args.trade - The trade data to confirm
|
416
|
+
* @param args.approval - The approval data to confirm
|
417
|
+
* @param args.resetApproval - The ethereum:USDT reset approval data to confirm
|
418
|
+
* @param args.quoteResponse - The quote response
|
419
|
+
* @param args.requireApproval - Whether to require approval for the transaction
|
420
|
+
* @returns The approvalMeta and tradeMeta for the batched transaction
|
421
|
+
*/
|
422
|
+
_BridgeStatusController_handleEvmTransactionBatch.set(this, async (args) => {
|
423
|
+
const transactionParams = await (0, transaction_1.getAddTransactionBatchParams)({
|
424
|
+
messagingSystem: this.messagingSystem,
|
425
|
+
estimateGasFeeFn: __classPrivateFieldGet(this, _BridgeStatusController_estimateGasFeeFn, "f"),
|
426
|
+
...args,
|
427
|
+
});
|
428
|
+
const txDataByType = {
|
429
|
+
[transaction_controller_1.TransactionType.bridgeApproval]: transactionParams.transactions.find(({ type }) => type === transaction_controller_1.TransactionType.bridgeApproval)?.params.data,
|
430
|
+
[transaction_controller_1.TransactionType.swapApproval]: transactionParams.transactions.find(({ type }) => type === transaction_controller_1.TransactionType.swapApproval)?.params.data,
|
431
|
+
[transaction_controller_1.TransactionType.bridge]: transactionParams.transactions.find(({ type }) => type === transaction_controller_1.TransactionType.bridge)?.params.data,
|
432
|
+
[transaction_controller_1.TransactionType.swap]: transactionParams.transactions.find(({ type }) => type === transaction_controller_1.TransactionType.swap)?.params.data,
|
433
|
+
};
|
434
|
+
const { batchId } = await __classPrivateFieldGet(this, _BridgeStatusController_addTransactionBatchFn, "f").call(this, transactionParams);
|
435
|
+
const { approvalMeta, tradeMeta } = (0, transaction_1.findAndUpdateTransactionsInBatch)({
|
436
|
+
messagingSystem: this.messagingSystem,
|
437
|
+
updateTransactionFn: __classPrivateFieldGet(this, _BridgeStatusController_updateTransactionFn, "f"),
|
438
|
+
batchId,
|
439
|
+
txDataByType,
|
440
|
+
});
|
441
|
+
if (!tradeMeta) {
|
442
|
+
throw new Error('Failed to update cross-chain swap transaction batch: tradeMeta not found');
|
443
|
+
}
|
444
|
+
return { approvalMeta, tradeMeta };
|
445
|
+
});
|
426
446
|
/**
|
427
447
|
* Submits a cross-chain swap transaction
|
428
448
|
*
|
@@ -445,7 +465,8 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
445
465
|
// Emit Submitted event after submit button is clicked
|
446
466
|
__classPrivateFieldGet(this, _BridgeStatusController_trackUnifiedSwapBridgeEvent, "f").call(this, bridge_controller_1.UnifiedSwapBridgeEventName.Submitted, undefined, preConfirmationProperties);
|
447
467
|
let txMeta;
|
448
|
-
let
|
468
|
+
let approvalTxId;
|
469
|
+
const startTime = Date.now();
|
449
470
|
const isBridgeTx = (0, bridge_controller_1.isCrossChain)(quoteResponse.quote.srcChainId, quoteResponse.quote.destChainId);
|
450
471
|
// Submit SOLANA tx
|
451
472
|
if ((0, bridge_controller_1.isSolanaChainId)(quoteResponse.quote.srcChainId) &&
|
@@ -477,10 +498,6 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
477
498
|
// Extension does not have this issue
|
478
499
|
const requireApproval = __classPrivateFieldGet(this, _BridgeStatusController_clientId, "f") === types_1.BridgeClientId.MOBILE &&
|
479
500
|
(0, bridge_controller_1.isHardwareWallet)(__classPrivateFieldGet(this, _BridgeStatusController_instances, "m", _BridgeStatusController_getMultichainSelectedAccount).call(this));
|
480
|
-
// Set approval time and id if an approval tx is needed
|
481
|
-
const approvalTxMeta = await __classPrivateFieldGet(this, _BridgeStatusController_handleApprovalTx, "f").call(this, isBridgeTx, quoteResponse, requireApproval);
|
482
|
-
approvalTime = approvalTxMeta?.time;
|
483
|
-
approvalTxId = approvalTxMeta?.id;
|
484
501
|
// Handle smart transactions if enabled
|
485
502
|
txMeta = await __classPrivateFieldGet(this, _BridgeStatusController_trace, "f").call(this, {
|
486
503
|
name: isBridgeTx
|
@@ -490,23 +507,30 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
490
507
|
srcChainId: (0, bridge_controller_1.formatChainIdToCaip)(quoteResponse.quote.srcChainId),
|
491
508
|
stxEnabled: isStxEnabledOnClient,
|
492
509
|
},
|
493
|
-
}, async () =>
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
510
|
+
}, async () => {
|
511
|
+
if (isStxEnabledOnClient) {
|
512
|
+
const { tradeMeta, approvalMeta } = await __classPrivateFieldGet(this, _BridgeStatusController_handleEvmTransactionBatch, "f").call(this, {
|
513
|
+
isBridgeTx,
|
514
|
+
resetApproval: await (0, transaction_1.getUSDTAllowanceResetTx)(this.messagingSystem, quoteResponse),
|
515
|
+
approval: quoteResponse.approval,
|
516
|
+
trade: quoteResponse.trade,
|
517
|
+
quoteResponse,
|
518
|
+
requireApproval,
|
519
|
+
});
|
520
|
+
approvalTxId = approvalMeta?.id;
|
521
|
+
return tradeMeta;
|
522
|
+
}
|
523
|
+
// Set approval time and id if an approval tx is needed
|
524
|
+
const approvalTxMeta = await __classPrivateFieldGet(this, _BridgeStatusController_handleApprovalTx, "f").call(this, isBridgeTx, quoteResponse);
|
525
|
+
approvalTxId = approvalTxMeta?.id;
|
526
|
+
return await __classPrivateFieldGet(this, _BridgeStatusController_handleEvmTransaction, "f").call(this, {
|
502
527
|
transactionType: isBridgeTx
|
503
528
|
? transaction_controller_1.TransactionType.bridge
|
504
529
|
: transaction_controller_1.TransactionType.swap,
|
505
530
|
trade: quoteResponse.trade,
|
506
|
-
quoteResponse,
|
507
|
-
approvalTxId,
|
508
531
|
requireApproval,
|
509
|
-
})
|
532
|
+
});
|
533
|
+
});
|
510
534
|
}
|
511
535
|
try {
|
512
536
|
// Add swap or bridge tx to history
|
@@ -519,7 +543,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
519
543
|
quoteResponse,
|
520
544
|
slippagePercentage: 0,
|
521
545
|
isStxEnabled: isStxEnabledOnClient,
|
522
|
-
startTime
|
546
|
+
startTime,
|
523
547
|
approvalTxId,
|
524
548
|
});
|
525
549
|
if ((0, bridge_controller_1.isSolanaChainId)(quoteResponse.quote.srcChainId)) {
|
@@ -569,6 +593,8 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
569
593
|
__classPrivateFieldSet(this, _BridgeStatusController_clientId, clientId, "f");
|
570
594
|
__classPrivateFieldSet(this, _BridgeStatusController_fetchFn, fetchFn, "f");
|
571
595
|
__classPrivateFieldSet(this, _BridgeStatusController_addTransactionFn, addTransactionFn, "f");
|
596
|
+
__classPrivateFieldSet(this, _BridgeStatusController_addTransactionBatchFn, addTransactionBatchFn, "f");
|
597
|
+
__classPrivateFieldSet(this, _BridgeStatusController_updateTransactionFn, updateTransactionFn, "f");
|
572
598
|
__classPrivateFieldSet(this, _BridgeStatusController_estimateGasFeeFn, estimateGasFeeFn, "f");
|
573
599
|
__classPrivateFieldSet(this, _BridgeStatusController_config, {
|
574
600
|
customBridgeApiBaseUrl: config?.customBridgeApiBaseUrl ?? constants_1.BRIDGE_PROD_API_BASE_URL,
|
@@ -584,22 +610,23 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
584
610
|
this.messagingSystem.subscribe('TransactionController:transactionFailed', ({ transactionMeta }) => {
|
585
611
|
const { type, status, id } = transactionMeta;
|
586
612
|
if (type &&
|
587
|
-
[
|
588
|
-
|
613
|
+
[
|
614
|
+
transaction_controller_1.TransactionType.bridge,
|
615
|
+
transaction_controller_1.TransactionType.swap,
|
616
|
+
transaction_controller_1.TransactionType.bridgeApproval,
|
617
|
+
transaction_controller_1.TransactionType.swapApproval,
|
618
|
+
].includes(type) &&
|
619
|
+
[
|
620
|
+
transaction_controller_1.TransactionStatus.failed,
|
621
|
+
transaction_controller_1.TransactionStatus.dropped,
|
622
|
+
transaction_controller_1.TransactionStatus.rejected,
|
623
|
+
].includes(status)) {
|
589
624
|
// Mark tx as failed in txHistory
|
590
|
-
this.
|
591
|
-
if (bridgeStatusState.txHistory[id]) {
|
592
|
-
bridgeStatusState.txHistory[id] = {
|
593
|
-
...bridgeStatusState.txHistory[id],
|
594
|
-
status: {
|
595
|
-
...bridgeStatusState.txHistory[id].status,
|
596
|
-
status: bridge_controller_1.StatusTypes.FAILED,
|
597
|
-
},
|
598
|
-
};
|
599
|
-
}
|
600
|
-
});
|
625
|
+
__classPrivateFieldGet(this, _BridgeStatusController_markTxAsFailed, "f").call(this, transactionMeta);
|
601
626
|
// Track failed event
|
602
|
-
|
627
|
+
if (status !== transaction_controller_1.TransactionStatus.rejected) {
|
628
|
+
__classPrivateFieldGet(this, _BridgeStatusController_trackUnifiedSwapBridgeEvent, "f").call(this, bridge_controller_1.UnifiedSwapBridgeEventName.Failed, id, (0, metrics_1.getEVMTxPropertiesFromTransactionMeta)(transactionMeta));
|
629
|
+
}
|
603
630
|
}
|
604
631
|
});
|
605
632
|
this.messagingSystem.subscribe('TransactionController:transactionConfirmed', (transactionMeta) => {
|
@@ -618,7 +645,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
618
645
|
}
|
619
646
|
}
|
620
647
|
exports.BridgeStatusController = BridgeStatusController;
|
621
|
-
_BridgeStatusController_pollingTokensByTxMetaId = new WeakMap(), _BridgeStatusController_clientId = new WeakMap(), _BridgeStatusController_fetchFn = new WeakMap(), _BridgeStatusController_config = new WeakMap(), _BridgeStatusController_addTransactionFn = new WeakMap(), _BridgeStatusController_estimateGasFeeFn = new WeakMap(), _BridgeStatusController_trace = new WeakMap(), _BridgeStatusController_restartPollingForIncompleteHistoryItems = new WeakMap(), _BridgeStatusController_addTxToHistory = new WeakMap(), _BridgeStatusController_startPollingForTxId = new WeakMap(), _BridgeStatusController_fetchBridgeTxStatus = new WeakMap(), _BridgeStatusController_getSrcTxHash = new WeakMap(), _BridgeStatusController_updateSrcTxHash = new WeakMap(), _BridgeStatusController_wipeBridgeStatusByChainId = new WeakMap(), _BridgeStatusController_handleSolanaTx = new WeakMap(), _BridgeStatusController_waitForHashAndReturnFinalTxMeta = new WeakMap(), _BridgeStatusController_handleApprovalTx = new WeakMap(),
|
648
|
+
_BridgeStatusController_pollingTokensByTxMetaId = new WeakMap(), _BridgeStatusController_clientId = new WeakMap(), _BridgeStatusController_fetchFn = new WeakMap(), _BridgeStatusController_config = new WeakMap(), _BridgeStatusController_addTransactionFn = new WeakMap(), _BridgeStatusController_addTransactionBatchFn = new WeakMap(), _BridgeStatusController_updateTransactionFn = new WeakMap(), _BridgeStatusController_estimateGasFeeFn = new WeakMap(), _BridgeStatusController_trace = new WeakMap(), _BridgeStatusController_markTxAsFailed = new WeakMap(), _BridgeStatusController_restartPollingForIncompleteHistoryItems = new WeakMap(), _BridgeStatusController_addTxToHistory = new WeakMap(), _BridgeStatusController_startPollingForTxId = new WeakMap(), _BridgeStatusController_fetchBridgeTxStatus = new WeakMap(), _BridgeStatusController_getSrcTxHash = new WeakMap(), _BridgeStatusController_updateSrcTxHash = new WeakMap(), _BridgeStatusController_wipeBridgeStatusByChainId = new WeakMap(), _BridgeStatusController_handleSolanaTx = new WeakMap(), _BridgeStatusController_waitForHashAndReturnFinalTxMeta = new WeakMap(), _BridgeStatusController_handleApprovalTx = new WeakMap(), _BridgeStatusController_handleEvmTransaction = new WeakMap(), _BridgeStatusController_handleUSDTAllowanceReset = new WeakMap(), _BridgeStatusController_calculateGasFees = new WeakMap(), _BridgeStatusController_handleEvmTransactionBatch = new WeakMap(), _BridgeStatusController_trackUnifiedSwapBridgeEvent = new WeakMap(), _BridgeStatusController_instances = new WeakSet(), _BridgeStatusController_getMultichainSelectedAccount = function _BridgeStatusController_getMultichainSelectedAccount() {
|
622
649
|
return this.messagingSystem.call('AccountsController:getSelectedMultichainAccount');
|
623
650
|
}, _BridgeStatusController_getMultichainSelectedAccountAddress = function _BridgeStatusController_getMultichainSelectedAccountAddress() {
|
624
651
|
return __classPrivateFieldGet(this, _BridgeStatusController_instances, "m", _BridgeStatusController_getMultichainSelectedAccount).call(this)?.address ?? '';
|