@metamask-previews/bridge-status-controller 44.0.0-preview-8ccfcb37 → 44.0.0-preview-b896289e
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 +2 -28
- package/dist/bridge-status-controller.cjs +44 -47
- package/dist/bridge-status-controller.cjs.map +1 -1
- package/dist/bridge-status-controller.d.cts +3 -3
- package/dist/bridge-status-controller.d.cts.map +1 -1
- package/dist/bridge-status-controller.d.mts +3 -3
- package/dist/bridge-status-controller.d.mts.map +1 -1
- package/dist/bridge-status-controller.mjs +45 -48
- package/dist/bridge-status-controller.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +3 -2
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +3 -2
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/transaction.cjs +38 -69
- package/dist/utils/transaction.cjs.map +1 -1
- package/dist/utils/transaction.d.cts +27 -37
- package/dist/utils/transaction.d.cts.map +1 -1
- package/dist/utils/transaction.d.mts +27 -37
- package/dist/utils/transaction.d.mts.map +1 -1
- package/dist/utils/transaction.mjs +37 -68
- package/dist/utils/transaction.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/utils/snaps.cjs +0 -35
- package/dist/utils/snaps.cjs.map +0 -1
- package/dist/utils/snaps.d.cts +0 -29
- package/dist/utils/snaps.d.cts.map +0 -1
- package/dist/utils/snaps.d.mts +0 -29
- package/dist/utils/snaps.d.mts.map +0 -1
- package/dist/utils/snaps.mjs +0 -31
- package/dist/utils/snaps.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
### Changed
|
|
11
11
|
|
|
12
|
+
- **BREAKING:** Use new `Messenger` from `@metamask/messenger` ([#6444](https://github.com/MetaMask/core/pull/6444))
|
|
13
|
+
- Previously, `BridgeStatusController` accepted a `RestrictedMessenger` instance from `@metamask/base-controller`.
|
|
12
14
|
- Refactor `handleLineaDelay` to `handleApprovalDelay` for improved abstraction and add support for Base chain by using an array and `includes` for chain ID checks ([#6674](https://github.com/MetaMask/core/pull/6674))
|
|
13
15
|
|
|
14
16
|
## [44.0.0]
|
|
@@ -21,41 +23,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
21
23
|
|
|
22
24
|
### Added
|
|
23
25
|
|
|
24
|
-
- Add support for Bitcoin bridge transactions ([#6454](https://github.com/MetaMask/core/pull/6454))
|
|
25
|
-
- Handle Bitcoin PSBT (Partially Signed Bitcoin Transaction) format in trade data
|
|
26
|
-
- Support Bitcoin transaction submission through unified Snap interface
|
|
27
|
-
- Add Bitcoin-specific transaction handling in `#handleNonEvmTx` method
|
|
28
|
-
- Support extraction of `unsignedPsbtBase64` from trade data for Bitcoin transactions
|
|
29
26
|
- Add new controller metadata properties to `BridgeStatusController` ([#6589](https://github.com/MetaMask/core/pull/6589))
|
|
30
27
|
|
|
31
28
|
### Changed
|
|
32
29
|
|
|
33
|
-
- Update transaction submission to use new unified Snap interface for all non-EVM chains ([#6454](https://github.com/MetaMask/core/pull/6454))
|
|
34
|
-
- Replace `signAndSendTransactionWithoutConfirmation` with `ClientRequest:signAndSendTransaction` method
|
|
35
|
-
- Update response handling to support new `transactionId` format from unified interface
|
|
36
|
-
- Support multiple response formats: string, `{ transactionId }`, `{ result: { signature } }`, and `{ signature }`
|
|
37
|
-
- Maintain backward compatibility with legacy response formats
|
|
38
|
-
- Rename transaction handling functions for clarity ([#6454](https://github.com/MetaMask/core/pull/6454))
|
|
39
|
-
- Rename `handleSolanaTxResponse` to `handleNonEvmTxResponse` to reflect support for all non-EVM chains
|
|
40
|
-
- Rename `#handleSolanaTx` to `#handleNonEvmTx` in BridgeStatusController
|
|
41
|
-
- Export `handleSolanaTxResponse` as an alias for backward compatibility (deprecated)
|
|
42
|
-
- Update transaction detection logic to identify non-EVM transactions ([#6454](https://github.com/MetaMask/core/pull/6454))
|
|
43
|
-
- Check for Bitcoin PSBT format (`unsignedPsbtBase64` in trade object) alongside string trade data
|
|
44
|
-
- Use `isNonEvmChainId` for determining non-EVM transaction handling
|
|
45
|
-
- Update chain ID handling for non-EVM chains ([#6454](https://github.com/MetaMask/core/pull/6454))
|
|
46
|
-
- Add fallback chain ID (`0x0`) when CAIP format can't be converted to hex for source chains
|
|
47
|
-
- Add fallback chain ID (`0x1`) for non-EVM destination chains
|
|
48
|
-
- Update `getClientRequest` to create proper requests for all non-EVM chains ([#6454](https://github.com/MetaMask/core/pull/6454))
|
|
49
|
-
- Use `formatChainIdToCaip` to get proper scope for each chain
|
|
50
|
-
- Extract transaction data from either string or PSBT object format
|
|
51
|
-
- Remove dependency on `@metamask/keyring-api` ([#6454](https://github.com/MetaMask/core/pull/6454))
|
|
52
30
|
- Bump `@metamask/controller-utils` from `^11.12.0` to `^11.14.0` ([#6620](https://github.com/MetaMask/core/pull/6620), [#6629](https://github.com/MetaMask/core/pull/6629))
|
|
53
31
|
- Bump `@metamask/base-controller` from `^8.3.0` to `^8.4.0` ([#6632](https://github.com/MetaMask/core/pull/6632))
|
|
54
32
|
|
|
55
|
-
### Removed
|
|
56
|
-
|
|
57
|
-
- Remove direct dependency on `@metamask/keyring-api` - no longer needed with unified Snap interface ([#6454](https://github.com/MetaMask/core/pull/6454))
|
|
58
|
-
|
|
59
33
|
## [43.0.0]
|
|
60
34
|
|
|
61
35
|
### Changed
|
|
@@ -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_addTransactionBatchFn, _BridgeStatusController_updateTransactionFn, _BridgeStatusController_estimateGasFeeFn, _BridgeStatusController_trace, _BridgeStatusController_markTxAsFailed, _BridgeStatusController_restartPollingForIncompleteHistoryItems, _BridgeStatusController_addTxToHistory, _BridgeStatusController_startPollingForTxId, _BridgeStatusController_getMultichainSelectedAccount, _BridgeStatusController_handleFetchFailure, _BridgeStatusController_fetchBridgeTxStatus, _BridgeStatusController_getSrcTxHash, _BridgeStatusController_updateSrcTxHash, _BridgeStatusController_wipeBridgeStatusByChainId,
|
|
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_handleFetchFailure, _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");
|
|
@@ -24,13 +24,14 @@ const bridge_status_1 = require("./utils/bridge-status.cjs");
|
|
|
24
24
|
const gas_1 = require("./utils/gas.cjs");
|
|
25
25
|
const metrics_1 = require("./utils/metrics.cjs");
|
|
26
26
|
const transaction_1 = require("./utils/transaction.cjs");
|
|
27
|
+
const transaction_2 = require("./utils/transaction.cjs");
|
|
27
28
|
const metadata = {
|
|
28
29
|
// We want to persist the bridge status state so that we can show the proper data for the Activity list
|
|
29
30
|
// basically match the behavior of TransactionController
|
|
30
31
|
txHistory: {
|
|
31
32
|
includeInStateLogs: true,
|
|
32
33
|
persist: true,
|
|
33
|
-
|
|
34
|
+
includeInDebugSnapshot: false,
|
|
34
35
|
usedInUi: true,
|
|
35
36
|
},
|
|
36
37
|
};
|
|
@@ -81,8 +82,8 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
81
82
|
});
|
|
82
83
|
}
|
|
83
84
|
else {
|
|
84
|
-
const { selectedNetworkClientId } = this.
|
|
85
|
-
const selectedNetworkClient = this.
|
|
85
|
+
const { selectedNetworkClientId } = this.messenger.call('NetworkController:getState');
|
|
86
|
+
const selectedNetworkClient = this.messenger.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
|
|
86
87
|
const selectedChainId = selectedNetworkClient.configuration.chainId;
|
|
87
88
|
__classPrivateFieldGet(this, _BridgeStatusController_wipeBridgeStatusByChainId, "f").call(this, address, selectedChainId);
|
|
88
89
|
}
|
|
@@ -349,7 +350,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
349
350
|
return srcTxHash;
|
|
350
351
|
}
|
|
351
352
|
// Look up in TransactionController if txMeta has been updated with the srcTxHash
|
|
352
|
-
const txControllerState = this.
|
|
353
|
+
const txControllerState = this.messenger.call('TransactionController:getState');
|
|
353
354
|
const txMeta = txControllerState.transactions.find((tx) => tx.id === bridgeTxMetaId);
|
|
354
355
|
return txMeta?.hash;
|
|
355
356
|
});
|
|
@@ -390,8 +391,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
390
391
|
*******************************************************
|
|
391
392
|
*/
|
|
392
393
|
/**
|
|
393
|
-
* Submits the transaction to the snap using the
|
|
394
|
-
* Works for all non-EVM chains (Solana, BTC, Tron)
|
|
394
|
+
* Submits the transaction to the snap using the keyring rpc method
|
|
395
395
|
* This adds an approval tx to the ApprovalsController in the background
|
|
396
396
|
* The client needs to handle the approval tx by redirecting to the confirmation page with the approvalTxId in the URL
|
|
397
397
|
*
|
|
@@ -400,20 +400,21 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
400
400
|
* @param selectedAccount - The account to submit the transaction for
|
|
401
401
|
* @returns The transaction meta
|
|
402
402
|
*/
|
|
403
|
-
|
|
403
|
+
_BridgeStatusController_handleSolanaTx.set(this, async (quoteResponse, selectedAccount) => {
|
|
404
404
|
if (!selectedAccount.metadata?.snap?.id) {
|
|
405
405
|
throw new Error('Failed to submit cross-chain swap transaction: undefined snap id');
|
|
406
406
|
}
|
|
407
407
|
const request = (0, transaction_1.getClientRequest)(quoteResponse, selectedAccount);
|
|
408
|
-
const requestResponse = (await this.
|
|
409
|
-
|
|
408
|
+
const requestResponse = (await this.messenger.call('SnapController:handleRequest', request));
|
|
409
|
+
// The extension client actually redirects before it can do anytyhing with this meta
|
|
410
|
+
const txMeta = (0, transaction_1.handleSolanaTxResponse)(requestResponse, quoteResponse, selectedAccount);
|
|
410
411
|
// TODO remove this eventually, just returning it now to match extension behavior
|
|
411
412
|
// OR if the snap can propagate the snapRequestId or keyringReqId to the ApprovalsController, this can return the approvalTxId instead and clients won't need to subscribe to the ApprovalsController state to redirect
|
|
412
413
|
return txMeta;
|
|
413
414
|
});
|
|
414
415
|
_BridgeStatusController_waitForHashAndReturnFinalTxMeta.set(this, async (hashPromise) => {
|
|
415
416
|
const transactionHash = await hashPromise;
|
|
416
|
-
const finalTransactionMeta = this.
|
|
417
|
+
const finalTransactionMeta = this.messenger
|
|
417
418
|
.call('TransactionController:getState')
|
|
418
419
|
.transactions.find((tx) => tx.hash === transactionHash);
|
|
419
420
|
if (!finalTransactionMeta) {
|
|
@@ -458,13 +459,13 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
458
459
|
* @returns The transaction meta
|
|
459
460
|
*/
|
|
460
461
|
_BridgeStatusController_handleEvmTransaction.set(this, async ({ transactionType, trade, requireApproval = false, }) => {
|
|
461
|
-
const actionId = (0,
|
|
462
|
-
const selectedAccount = this.
|
|
462
|
+
const actionId = (0, transaction_2.generateActionId)().toString();
|
|
463
|
+
const selectedAccount = this.messenger.call('AccountsController:getAccountByAddress', trade.from);
|
|
463
464
|
if (!selectedAccount) {
|
|
464
465
|
throw new Error('Failed to submit cross-chain swap transaction: unknown account in trade data');
|
|
465
466
|
}
|
|
466
467
|
const hexChainId = (0, bridge_controller_1.formatChainIdToHex)(trade.chainId);
|
|
467
|
-
const networkClientId = this.
|
|
468
|
+
const networkClientId = this.messenger.call('NetworkController:findNetworkClientIdByChainId', hexChainId);
|
|
468
469
|
const requestOptions = {
|
|
469
470
|
actionId,
|
|
470
471
|
networkClientId,
|
|
@@ -486,7 +487,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
486
487
|
return await __classPrivateFieldGet(this, _BridgeStatusController_waitForHashAndReturnFinalTxMeta, "f").call(this, result);
|
|
487
488
|
});
|
|
488
489
|
_BridgeStatusController_handleUSDTAllowanceReset.set(this, async (quoteResponse) => {
|
|
489
|
-
const resetApproval = await (0, transaction_1.getUSDTAllowanceResetTx)(this.
|
|
490
|
+
const resetApproval = await (0, transaction_1.getUSDTAllowanceResetTx)(this.messenger, quoteResponse);
|
|
490
491
|
if (resetApproval) {
|
|
491
492
|
await __classPrivateFieldGet(this, _BridgeStatusController_handleEvmTransaction, "f").call(this, {
|
|
492
493
|
transactionType: transaction_controller_1.TransactionType.bridgeApproval,
|
|
@@ -495,7 +496,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
495
496
|
}
|
|
496
497
|
});
|
|
497
498
|
_BridgeStatusController_calculateGasFees.set(this, async (transactionParams, networkClientId, chainId) => {
|
|
498
|
-
const { gasFeeEstimates } = this.
|
|
499
|
+
const { gasFeeEstimates } = this.messenger.call('GasFeeController:getState');
|
|
499
500
|
const { estimates: txGasFeeEstimates } = await __classPrivateFieldGet(this, _BridgeStatusController_estimateGasFeeFn, "f").call(this, {
|
|
500
501
|
transactionParams,
|
|
501
502
|
chainId,
|
|
@@ -526,7 +527,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
526
527
|
*/
|
|
527
528
|
_BridgeStatusController_handleEvmTransactionBatch.set(this, async (args) => {
|
|
528
529
|
const transactionParams = await (0, transaction_1.getAddTransactionBatchParams)({
|
|
529
|
-
|
|
530
|
+
messenger: this.messenger,
|
|
530
531
|
estimateGasFeeFn: __classPrivateFieldGet(this, _BridgeStatusController_estimateGasFeeFn, "f"),
|
|
531
532
|
...args,
|
|
532
533
|
});
|
|
@@ -538,7 +539,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
538
539
|
};
|
|
539
540
|
const { batchId } = await __classPrivateFieldGet(this, _BridgeStatusController_addTransactionBatchFn, "f").call(this, transactionParams);
|
|
540
541
|
const { approvalMeta, tradeMeta } = (0, transaction_1.findAndUpdateTransactionsInBatch)({
|
|
541
|
-
|
|
542
|
+
messenger: this.messenger,
|
|
542
543
|
updateTransactionFn: __classPrivateFieldGet(this, _BridgeStatusController_updateTransactionFn, "f"),
|
|
543
544
|
batchId,
|
|
544
545
|
txDataByType,
|
|
@@ -556,7 +557,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
556
557
|
* @returns The transaction meta
|
|
557
558
|
*/
|
|
558
559
|
this.submitTx = async (quoteResponse, isStxEnabledOnClient) => {
|
|
559
|
-
this.
|
|
560
|
+
this.messenger.call('BridgeController:stopPollingForQuotes');
|
|
560
561
|
const selectedAccount = __classPrivateFieldGet(this, _BridgeStatusController_instances, "m", _BridgeStatusController_getMultichainSelectedAccount).call(this);
|
|
561
562
|
if (!selectedAccount) {
|
|
562
563
|
throw new Error('Failed to submit cross-chain swap transaction: undefined multichain account');
|
|
@@ -569,13 +570,9 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
569
570
|
let approvalTxId;
|
|
570
571
|
const startTime = Date.now();
|
|
571
572
|
const isBridgeTx = (0, bridge_controller_1.isCrossChain)(quoteResponse.quote.srcChainId, quoteResponse.quote.destChainId);
|
|
572
|
-
// Submit
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
(typeof quoteResponse.trade === 'string' ||
|
|
576
|
-
(typeof quoteResponse.trade === 'object' &&
|
|
577
|
-
'unsignedPsbtBase64' in quoteResponse.trade));
|
|
578
|
-
if (isNonEvmTrade) {
|
|
573
|
+
// Submit SOLANA tx
|
|
574
|
+
if ((0, bridge_controller_1.isSolanaChainId)(quoteResponse.quote.srcChainId) &&
|
|
575
|
+
typeof quoteResponse.trade === 'string') {
|
|
579
576
|
txMeta = await __classPrivateFieldGet(this, _BridgeStatusController_trace, "f").call(this, {
|
|
580
577
|
name: isBridgeTx
|
|
581
578
|
? constants_1.TraceName.BridgeTransactionCompleted
|
|
@@ -586,7 +583,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
586
583
|
},
|
|
587
584
|
}, async () => {
|
|
588
585
|
try {
|
|
589
|
-
return await __classPrivateFieldGet(this,
|
|
586
|
+
return await __classPrivateFieldGet(this, _BridgeStatusController_handleSolanaTx, "f").call(this, quoteResponse, selectedAccount);
|
|
590
587
|
}
|
|
591
588
|
catch (error) {
|
|
592
589
|
__classPrivateFieldGet(this, _BridgeStatusController_trackUnifiedSwapBridgeEvent, "f").call(this, bridge_controller_1.UnifiedSwapBridgeEventName.Failed, txMeta?.id, {
|
|
@@ -615,7 +612,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
615
612
|
if (isStxEnabledOnClient || quoteResponse.quote.gasIncluded7702) {
|
|
616
613
|
const { tradeMeta, approvalMeta } = await __classPrivateFieldGet(this, _BridgeStatusController_handleEvmTransactionBatch, "f").call(this, {
|
|
617
614
|
isBridgeTx,
|
|
618
|
-
resetApproval: await (0, transaction_1.getUSDTAllowanceResetTx)(this.
|
|
615
|
+
resetApproval: await (0, transaction_1.getUSDTAllowanceResetTx)(this.messenger, quoteResponse),
|
|
619
616
|
approval: quoteResponse.approval,
|
|
620
617
|
trade: quoteResponse.trade,
|
|
621
618
|
quoteResponse,
|
|
@@ -652,10 +649,10 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
652
649
|
startTime,
|
|
653
650
|
approvalTxId,
|
|
654
651
|
});
|
|
655
|
-
if ((0, bridge_controller_1.
|
|
652
|
+
if ((0, bridge_controller_1.isSolanaChainId)(quoteResponse.quote.srcChainId)) {
|
|
656
653
|
// Start polling for bridge tx status
|
|
657
654
|
__classPrivateFieldGet(this, _BridgeStatusController_startPollingForTxId, "f").call(this, txMeta.id);
|
|
658
|
-
// Track
|
|
655
|
+
// Track Solana Swap completed event
|
|
659
656
|
if (!isBridgeTx) {
|
|
660
657
|
__classPrivateFieldGet(this, _BridgeStatusController_trackUnifiedSwapBridgeEvent, "f").call(this, bridge_controller_1.UnifiedSwapBridgeEventName.Completed, txMeta.id);
|
|
661
658
|
}
|
|
@@ -679,22 +676,22 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
679
676
|
...(eventProperties ?? {}),
|
|
680
677
|
};
|
|
681
678
|
if (!txMetaId) {
|
|
682
|
-
this.
|
|
679
|
+
this.messenger.call('BridgeController:trackUnifiedSwapBridgeEvent', eventName, baseProperties);
|
|
683
680
|
return;
|
|
684
681
|
}
|
|
685
682
|
const historyItem = this.state.txHistory[txMetaId];
|
|
686
683
|
if (!historyItem) {
|
|
687
|
-
this.
|
|
684
|
+
this.messenger.call('BridgeController:trackUnifiedSwapBridgeEvent', eventName, eventProperties ?? {});
|
|
688
685
|
return;
|
|
689
686
|
}
|
|
690
|
-
const selectedAccount = this.
|
|
691
|
-
const { transactions } = this.
|
|
687
|
+
const selectedAccount = this.messenger.call('AccountsController:getAccountByAddress', historyItem.account);
|
|
688
|
+
const { transactions } = this.messenger.call('TransactionController:getState');
|
|
692
689
|
const txMeta = transactions?.find(({ id }) => id === txMetaId);
|
|
693
690
|
const approvalTxMeta = transactions?.find(({ id }) => id === historyItem.approvalTxId);
|
|
694
691
|
const requestParamProperties = (0, metrics_1.getRequestParamFromHistory)(historyItem);
|
|
695
692
|
if (eventName === bridge_controller_1.UnifiedSwapBridgeEventName.StatusValidationFailed) {
|
|
696
693
|
const { chain_id_source, chain_id_destination, token_address_source, token_address_destination, } = requestParamProperties;
|
|
697
|
-
this.
|
|
694
|
+
this.messenger.call('BridgeController:trackUnifiedSwapBridgeEvent', eventName, {
|
|
698
695
|
...baseProperties,
|
|
699
696
|
chain_id_source,
|
|
700
697
|
chain_id_destination,
|
|
@@ -713,7 +710,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
713
710
|
...(0, metrics_1.getFinalizedTxProperties)(historyItem, txMeta, approvalTxMeta),
|
|
714
711
|
...(0, metrics_1.getPriceImpactFromQuote)(historyItem.quote),
|
|
715
712
|
};
|
|
716
|
-
this.
|
|
713
|
+
this.messenger.call('BridgeController:trackUnifiedSwapBridgeEvent', eventName, requiredEventProperties);
|
|
717
714
|
});
|
|
718
715
|
__classPrivateFieldSet(this, _BridgeStatusController_clientId, clientId, "f");
|
|
719
716
|
__classPrivateFieldSet(this, _BridgeStatusController_fetchFn, fetchFn, "f");
|
|
@@ -726,15 +723,15 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
726
723
|
}, "f");
|
|
727
724
|
__classPrivateFieldSet(this, _BridgeStatusController_trace, traceFn ?? ((_request, fn) => fn?.()), "f");
|
|
728
725
|
// Register action handlers
|
|
729
|
-
this.
|
|
730
|
-
this.
|
|
731
|
-
this.
|
|
732
|
-
this.
|
|
733
|
-
this.
|
|
734
|
-
this.
|
|
726
|
+
this.messenger.registerActionHandler(`${constants_1.BRIDGE_STATUS_CONTROLLER_NAME}:startPollingForBridgeTxStatus`, this.startPollingForBridgeTxStatus.bind(this));
|
|
727
|
+
this.messenger.registerActionHandler(`${constants_1.BRIDGE_STATUS_CONTROLLER_NAME}:wipeBridgeStatus`, this.wipeBridgeStatus.bind(this));
|
|
728
|
+
this.messenger.registerActionHandler(`${constants_1.BRIDGE_STATUS_CONTROLLER_NAME}:resetState`, this.resetState.bind(this));
|
|
729
|
+
this.messenger.registerActionHandler(`${constants_1.BRIDGE_STATUS_CONTROLLER_NAME}:submitTx`, this.submitTx.bind(this));
|
|
730
|
+
this.messenger.registerActionHandler(`${constants_1.BRIDGE_STATUS_CONTROLLER_NAME}:restartPollingForFailedAttempts`, this.restartPollingForFailedAttempts.bind(this));
|
|
731
|
+
this.messenger.registerActionHandler(`${constants_1.BRIDGE_STATUS_CONTROLLER_NAME}:getBridgeHistoryItemByTxMetaId`, this.getBridgeHistoryItemByTxMetaId.bind(this));
|
|
735
732
|
// Set interval
|
|
736
733
|
this.setIntervalLength(constants_1.REFRESH_INTERVAL_MS);
|
|
737
|
-
this.
|
|
734
|
+
this.messenger.subscribe('TransactionController:transactionFailed', ({ transactionMeta }) => {
|
|
738
735
|
const { type, status, id } = transactionMeta;
|
|
739
736
|
if (type &&
|
|
740
737
|
[
|
|
@@ -756,12 +753,12 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
756
753
|
}
|
|
757
754
|
}
|
|
758
755
|
});
|
|
759
|
-
this.
|
|
756
|
+
this.messenger.subscribe('TransactionController:transactionConfirmed', (transactionMeta) => {
|
|
760
757
|
const { type, id, chainId } = transactionMeta;
|
|
761
758
|
if (type === transaction_controller_1.TransactionType.swap) {
|
|
762
759
|
__classPrivateFieldGet(this, _BridgeStatusController_trackUnifiedSwapBridgeEvent, "f").call(this, bridge_controller_1.UnifiedSwapBridgeEventName.Completed, id);
|
|
763
760
|
}
|
|
764
|
-
if (type === transaction_controller_1.TransactionType.bridge && !(0, bridge_controller_1.
|
|
761
|
+
if (type === transaction_controller_1.TransactionType.bridge && !(0, bridge_controller_1.isSolanaChainId)(chainId)) {
|
|
765
762
|
__classPrivateFieldGet(this, _BridgeStatusController_startPollingForTxId, "f").call(this, id);
|
|
766
763
|
}
|
|
767
764
|
});
|
|
@@ -772,7 +769,7 @@ class BridgeStatusController extends (0, polling_controller_1.StaticIntervalPoll
|
|
|
772
769
|
}
|
|
773
770
|
}
|
|
774
771
|
exports.BridgeStatusController = BridgeStatusController;
|
|
775
|
-
_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_handleFetchFailure = new WeakMap(), _BridgeStatusController_fetchBridgeTxStatus = new WeakMap(), _BridgeStatusController_getSrcTxHash = new WeakMap(), _BridgeStatusController_updateSrcTxHash = new WeakMap(), _BridgeStatusController_wipeBridgeStatusByChainId = new WeakMap(),
|
|
776
|
-
return this.
|
|
772
|
+
_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_handleFetchFailure = 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() {
|
|
773
|
+
return this.messenger.call('AccountsController:getSelectedMultichainAccount');
|
|
777
774
|
};
|
|
778
775
|
//# sourceMappingURL=bridge-status-controller.cjs.map
|