Skip to content

Commit 1f8f51b

Browse files
authored
fix: Extend definition of when a regular tx is marked as failed, clean up unsupported statuses (#485)
1 parent c71af84 commit 1f8f51b

File tree

5 files changed

+358
-46
lines changed

5 files changed

+358
-46
lines changed

src/SmartTransactionsController.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1270,8 +1270,12 @@ describe('SmartTransactionsController', () => {
12701270
from: '0x123',
12711271
},
12721272
networkClientId: NetworkType.mainnet,
1273+
error: {
1274+
message: 'Smart transaction failed with status: cancelled',
1275+
name: 'SmartTransactionFailed',
1276+
},
12731277
},
1274-
'Smart transaction cancelled',
1278+
'Smart transaction status: cancelled',
12751279
);
12761280
},
12771281
);

src/SmartTransactionsController.ts

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ import {
5656
getTxHash,
5757
getSmartTransactionMetricsProperties,
5858
getSmartTransactionMetricsSensitiveProperties,
59-
getReturnTxHashAsap,
59+
shouldMarkRegularTransactionAsFailed,
60+
markRegularTransactionAsFailed,
6061
} from './utils';
6162

6263
const SECOND = 1000;
@@ -558,27 +559,18 @@ export default class SmartTransactionsController extends StaticIntervalPollingCo
558559
nextSmartTransaction,
559560
);
560561

561-
if (nextSmartTransaction.status === SmartTransactionStatuses.CANCELLED) {
562-
const returnTxHashAsap = getReturnTxHashAsap(
563-
this.#clientId,
564-
this.#getFeatureFlags()?.smartTransactions,
565-
);
566-
if (returnTxHashAsap && nextSmartTransaction.transactionId) {
567-
const foundTransaction = this.#getRegularTransactions().find(
568-
(transaction) =>
569-
transaction.id === nextSmartTransaction.transactionId,
570-
);
571-
if (foundTransaction) {
572-
const updatedTransaction = {
573-
...foundTransaction,
574-
status: TransactionStatus.failed,
575-
};
576-
this.#updateTransaction(
577-
updatedTransaction as TransactionMeta,
578-
'Smart transaction cancelled',
579-
);
580-
}
581-
}
562+
if (
563+
shouldMarkRegularTransactionAsFailed({
564+
smartTransaction: nextSmartTransaction,
565+
clientId: this.#clientId,
566+
getFeatureFlags: this.#getFeatureFlags,
567+
})
568+
) {
569+
markRegularTransactionAsFailed({
570+
smartTransaction: nextSmartTransaction,
571+
getRegularTransactions: this.#getRegularTransactions,
572+
updateTransaction: this.#updateTransaction,
573+
});
582574
}
583575

584576
if (

src/types.ts

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export enum SmartTransactionCancellationReason {
2727
INVALID_NONCE = 'invalid_nonce',
2828
USER_CANCELLED = 'user_cancelled',
2929
NOT_CANCELLED = 'not_cancelled',
30-
PREVIOUS_TX_CANCELLED = 'previous_tx_cancelled',
3130
}
3231

3332
export enum SmartTransactionStatuses {
@@ -36,12 +35,7 @@ export enum SmartTransactionStatuses {
3635
REVERTED = 'reverted',
3736
UNKNOWN = 'unknown',
3837
CANCELLED = 'cancelled',
39-
CANCELLED_WOULD_REVERT = 'cancelled_would_revert',
40-
CANCELLED_TOO_CHEAP = 'cancelled_too_cheap',
41-
CANCELLED_DEADLINE_MISSED = 'cancelled_deadline_missed',
42-
CANCELLED_INVALID_NONCE = 'cancelled_invalid_nonce',
4338
CANCELLED_USER_CANCELLED = 'cancelled_user_cancelled',
44-
CANCELLED_PREVIOUS_TX_CANCELLED = 'cancelled_previous_tx_cancelled',
4539
RESOLVED = 'resolved',
4640
}
4741

@@ -52,17 +46,15 @@ export enum ClientId {
5246

5347
export const cancellationReasonToStatusMap = {
5448
[SmartTransactionCancellationReason.WOULD_REVERT]:
55-
SmartTransactionStatuses.CANCELLED_WOULD_REVERT,
49+
SmartTransactionStatuses.CANCELLED,
5650
[SmartTransactionCancellationReason.TOO_CHEAP]:
57-
SmartTransactionStatuses.CANCELLED_TOO_CHEAP,
51+
SmartTransactionStatuses.CANCELLED,
5852
[SmartTransactionCancellationReason.DEADLINE_MISSED]:
59-
SmartTransactionStatuses.CANCELLED_DEADLINE_MISSED,
53+
SmartTransactionStatuses.CANCELLED,
6054
[SmartTransactionCancellationReason.INVALID_NONCE]:
61-
SmartTransactionStatuses.CANCELLED_INVALID_NONCE,
55+
SmartTransactionStatuses.CANCELLED,
6256
[SmartTransactionCancellationReason.USER_CANCELLED]:
6357
SmartTransactionStatuses.CANCELLED_USER_CANCELLED,
64-
[SmartTransactionCancellationReason.PREVIOUS_TX_CANCELLED]:
65-
SmartTransactionStatuses.CANCELLED_PREVIOUS_TX_CANCELLED,
6658
};
6759

6860
export type SmartTransactionsStatus = {

0 commit comments

Comments
 (0)