diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md index 42270b3aa93..76da75e00db 100644 --- a/packages/transaction-controller/CHANGELOG.md +++ b/packages/transaction-controller/CHANGELOG.md @@ -12,6 +12,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Calculate operator fee for OP stack networks and include it in `layer1GasFee` ([#6979](https://github.com/MetaMask/core/pull/6979)) - Add support for `isGasFeeSponsored` field in transaction batch and add transaction options ([#7064](https://github.com/MetaMask/core/pull/7064)) +### Fixed + +- Prevent transactions marked as `dropped` if nonce matches incoming transaction ([#7097](https://github.com/MetaMask/core/pull/7097)) + ## [61.1.0] ### Added diff --git a/packages/transaction-controller/src/helpers/PendingTransactionTracker.test.ts b/packages/transaction-controller/src/helpers/PendingTransactionTracker.test.ts index b68df259442..a24e93f9e57 100644 --- a/packages/transaction-controller/src/helpers/PendingTransactionTracker.test.ts +++ b/packages/transaction-controller/src/helpers/PendingTransactionTracker.test.ts @@ -565,6 +565,38 @@ describe('PendingTransactionTracker', () => { expect(listener).not.toHaveBeenCalled(); }); + + it('unless incoming transaction', async () => { + const listener = jest.fn(); + + const confirmedTransactionMetaMock = { + ...TRANSACTION_SUBMITTED_MOCK, + id: `${ID_MOCK}2`, + status: TransactionStatus.confirmed, + isTransfer: false, + } as unknown as TransactionMeta; + + const submittedTransactionMetaMock = { + ...TRANSACTION_SUBMITTED_MOCK, + }; + + pendingTransactionTracker = new PendingTransactionTracker({ + ...options, + getTransactions: () => [ + confirmedTransactionMetaMock, + submittedTransactionMetaMock, + ], + }); + + pendingTransactionTracker.hub.addListener( + 'transaction-dropped', + listener, + ); + + await onPoll(); + + expect(listener).not.toHaveBeenCalled(); + }); }); describe('fires confirmed event', () => { diff --git a/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts b/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts index 9f1d4a7b503..4d2ddd9fe16 100644 --- a/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts +++ b/packages/transaction-controller/src/helpers/PendingTransactionTracker.ts @@ -543,7 +543,8 @@ export class PendingTransactionTracker { tx.status === TransactionStatus.confirmed && tx.txParams.nonce && tx.txParams.nonce === txParams.nonce && - tx.type !== TransactionType.incoming, + tx.type !== TransactionType.incoming && + tx.isTransfer === undefined, ); }