diff --git a/packages/bridge-controller/CHANGELOG.md b/packages/bridge-controller/CHANGELOG.md index 80bd69fe542..7a136f01481 100644 --- a/packages/bridge-controller/CHANGELOG.md +++ b/packages/bridge-controller/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Export `isTronChainId` from the package entrypoint ([#7697](https://github.com/MetaMask/core/pull/7697)) + ### Changed - Bump `@metamask/assets-controllers` from `^99.0.0` to `^99.1.0` ([#7771](https://github.com/MetaMask/core/pull/7771)) diff --git a/packages/bridge-controller/src/index.ts b/packages/bridge-controller/src/index.ts index 714397be2a2..4be51a55a0e 100644 --- a/packages/bridge-controller/src/index.ts +++ b/packages/bridge-controller/src/index.ts @@ -119,6 +119,7 @@ export { isNativeAddress, isSolanaChainId, isBitcoinChainId, + isTronChainId, isNonEvmChainId, getNativeAssetForChainId, getDefaultBridgeControllerState, diff --git a/packages/bridge-status-controller/CHANGELOG.md b/packages/bridge-status-controller/CHANGELOG.md index 40f9ae64b96..d82539778d8 100644 --- a/packages/bridge-status-controller/CHANGELOG.md +++ b/packages/bridge-status-controller/CHANGELOG.md @@ -36,6 +36,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Bump `@metamask/bridge-controller` from `^64.5.1` to `^64.8.1` ([#7667](https://github.com/MetaMask/core/pull/7667), [#7672](https://github.com/MetaMask/core/pull/7672), [#7694](https://github.com/MetaMask/core/pull/7694), [#7700](https://github.com/MetaMask/core/pull/7700), [#7704](https://github.com/MetaMask/core/pull/7704)) +### Fixed + +- Fix Tron same-chain swap polling and Completed event tracking ([#7697](https://github.com/MetaMask/core/pull/7697)) + ## [64.4.3] ### Changed diff --git a/packages/bridge-status-controller/src/__snapshots__/bridge-status-controller.test.ts.snap b/packages/bridge-status-controller/src/__snapshots__/bridge-status-controller.test.ts.snap index f8325db8bb3..9d6865119dc 100644 --- a/packages/bridge-status-controller/src/__snapshots__/bridge-status-controller.test.ts.snap +++ b/packages/bridge-status-controller/src/__snapshots__/bridge-status-controller.test.ts.snap @@ -4626,13 +4626,6 @@ Array [ "snapId": "npm:@metamask/tron-snap", }, ], - Array [ - "AccountsController:getAccountByAddress", - "TRX123...", - ], - Array [ - "TransactionController:getState", - ], ] `; diff --git a/packages/bridge-status-controller/src/bridge-status-controller.test.ts b/packages/bridge-status-controller/src/bridge-status-controller.test.ts index 5af1c07f817..62e3ad90fb4 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.test.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.test.ts @@ -2335,8 +2335,8 @@ describe('BridgeStatusController', () => { expect(mockMessengerCall.mock.calls).toMatchSnapshot(); expect(result).toMatchSnapshot(); - // Swaps don't start polling (only bridges do) - expect(startPollingForBridgeTxStatusSpy).toHaveBeenCalledTimes(0); + // Tron swaps start polling for async settlement + expect(startPollingForBridgeTxStatusSpy).toHaveBeenCalledTimes(1); expect(controller.state.txHistory[result.id]).toMatchSnapshot(); }); diff --git a/packages/bridge-status-controller/src/bridge-status-controller.ts b/packages/bridge-status-controller/src/bridge-status-controller.ts index 7383d6d963e..e7d42e1307e 100644 --- a/packages/bridge-status-controller/src/bridge-status-controller.ts +++ b/packages/bridge-status-controller/src/bridge-status-controller.ts @@ -15,6 +15,7 @@ import { UnifiedSwapBridgeEventName, formatChainIdToCaip, isCrossChain, + isTronChainId, isEvmTxData, isHardwareWallet, MetricsActionType, @@ -386,13 +387,8 @@ export class BridgeStatusController extends StaticIntervalPollingController { - const isBridgeTx = isCrossChain( - historyItem.quote.srcChainId, - historyItem.quote.destChainId, - ); - return isBridgeTx; + return this.#shouldPollHistoryItem(historyItem, historyItem.txMetaId); }); incompleteHistoryItems.forEach((historyItem) => { @@ -584,16 +576,28 @@ export class BridgeStatusController extends StaticIntervalPollingController { + const isIntent = txMetaId.startsWith('intent:'); + const isBridgeTx = isCrossChain( + historyItem.quote.srcChainId, + historyItem.quote.destChainId, + ); + + const isTronTx = isTronChainId(historyItem.quote.srcChainId); + + return isBridgeTx || isIntent || isTronTx; + }; + /** * @deprecated For EVM/Solana swap/bridge txs we add tx to history in submitTx() * For Solana swap/bridge we start polling in submitTx() @@ -1477,6 +1481,7 @@ export class BridgeStatusController extends StaticIntervalPollingController