@@ -10,14 +10,10 @@ import { TransactionStatusEnum } from "../schemas/transaction";
10
10
11
11
interface CancelTransactionAndUpdateParams {
12
12
queueId : string ;
13
- walletAddress : string ;
14
- accountAddress : string ;
15
13
}
16
14
17
15
export const cancelTransactionAndUpdate = async ( {
18
16
queueId,
19
- walletAddress,
20
- accountAddress,
21
17
} : CancelTransactionAndUpdateParams ) => {
22
18
const txData = await getTxById ( { queueId } ) ;
23
19
if ( ! txData ) {
@@ -26,87 +22,123 @@ export const cancelTransactionAndUpdate = async ({
26
22
} ;
27
23
}
28
24
25
+ let message = "" ;
29
26
let error = null ;
30
27
let transferTransactionResult : TransactionResponse | null = null ;
31
28
32
- let message = "" ;
33
-
34
- switch ( txData . status ) {
35
- case TransactionStatusEnum . Errored :
36
- error = createCustomError (
37
- `Cannot cancel errored transaction with queueId ${ queueId } . Error: ${ txData . errorMessage } ` ,
38
- StatusCodes . BAD_REQUEST ,
39
- "TransactionErrored" ,
40
- ) ;
41
- break ;
42
- case TransactionStatusEnum . Cancelled :
43
- error = createCustomError (
44
- `Transaction already cancelled with queueId ${ queueId } ` ,
45
- StatusCodes . BAD_REQUEST ,
46
- "TransactionAlreadyCancelled" ,
47
- ) ;
48
- break ;
49
- case TransactionStatusEnum . Queued :
50
- await updateTx ( {
51
- queueId,
52
- data : {
53
- status : TransactionStatusEnum . Cancelled ,
54
- } ,
55
- } ) ;
56
- message = "Transaction cancelled on-database successfully." ;
57
- break ;
58
- case TransactionStatusEnum . Mined :
59
- error = createCustomError (
60
- `Transaction already mined with queueId ${ queueId } ` ,
61
- StatusCodes . BAD_REQUEST ,
62
- "TransactionAlreadyMined" ,
63
- ) ;
64
- break ;
65
- case TransactionStatusEnum . Processed :
66
- case TransactionStatusEnum . Submitted : {
67
- const sdk = await getSdk ( {
68
- chainId : parseInt ( txData . chainId ! ) ,
69
- walletAddress : txData . fromAddress ! ,
70
- accountAddress,
71
- } ) ;
29
+ if ( txData . signerAddress && txData . accountAddress ) {
30
+ switch ( txData . status ) {
31
+ case TransactionStatusEnum . Errored :
32
+ throw createCustomError (
33
+ `Cannot cancel user operation because it already errored` ,
34
+ StatusCodes . BAD_REQUEST ,
35
+ "TransactionErrored" ,
36
+ ) ;
37
+ case TransactionStatusEnum . Cancelled :
38
+ throw createCustomError (
39
+ `User operation was already cancelled` ,
40
+ StatusCodes . BAD_REQUEST ,
41
+ "TransactionAlreadyCancelled" ,
42
+ ) ;
43
+ case TransactionStatusEnum . Mined :
44
+ throw createCustomError (
45
+ `Cannot cancel user operation because it was already mined` ,
46
+ StatusCodes . BAD_REQUEST ,
47
+ "TransactionAlreadyMined" ,
48
+ ) ;
49
+ case TransactionStatusEnum . Submitted :
50
+ case TransactionStatusEnum . Processed :
51
+ throw createCustomError (
52
+ `Cannot cancel user operation because it was already processed.` ,
53
+ StatusCodes . BAD_REQUEST ,
54
+ "TransactionAlreadySubmitted" ,
55
+ ) ;
56
+ case TransactionStatusEnum . Queued :
57
+ await updateTx ( {
58
+ queueId,
59
+ data : {
60
+ status : TransactionStatusEnum . Cancelled ,
61
+ } ,
62
+ } ) ;
63
+ message = "Transaction cancelled on-database successfully." ;
64
+ break ;
65
+ }
66
+ } else {
67
+ switch ( txData . status ) {
68
+ case TransactionStatusEnum . Errored :
69
+ error = createCustomError (
70
+ `Cannot cancel errored transaction with queueId ${ queueId } . Error: ${ txData . errorMessage } ` ,
71
+ StatusCodes . BAD_REQUEST ,
72
+ "TransactionErrored" ,
73
+ ) ;
74
+ break ;
75
+ case TransactionStatusEnum . Cancelled :
76
+ error = createCustomError (
77
+ `Transaction already cancelled with queueId ${ queueId } ` ,
78
+ StatusCodes . BAD_REQUEST ,
79
+ "TransactionAlreadyCancelled" ,
80
+ ) ;
81
+ break ;
82
+ case TransactionStatusEnum . Queued :
83
+ await updateTx ( {
84
+ queueId,
85
+ data : {
86
+ status : TransactionStatusEnum . Cancelled ,
87
+ } ,
88
+ } ) ;
89
+ message = "Transaction cancelled on-database successfully." ;
90
+ break ;
91
+ case TransactionStatusEnum . Mined :
92
+ error = createCustomError (
93
+ `Transaction already mined with queueId ${ queueId } ` ,
94
+ StatusCodes . BAD_REQUEST ,
95
+ "TransactionAlreadyMined" ,
96
+ ) ;
97
+ break ;
98
+ case TransactionStatusEnum . Processed :
99
+ case TransactionStatusEnum . Submitted : {
100
+ const sdk = await getSdk ( {
101
+ chainId : parseInt ( txData . chainId ! ) ,
102
+ walletAddress : txData . fromAddress ! ,
103
+ } ) ;
72
104
73
- const txReceipt = await sdk
74
- . getProvider ( )
75
- . getTransactionReceipt ( txData . transactionHash ! ) ;
105
+ const txReceipt = await sdk
106
+ . getProvider ( )
107
+ . getTransactionReceipt ( txData . transactionHash ! ) ;
76
108
77
- if ( txReceipt ) {
78
- message =
79
- "Transaction already mined. Cannot cancel transaction on-chain." ;
80
- break ;
81
- }
109
+ if ( txReceipt ) {
110
+ message =
111
+ "Transaction already mined. Cannot cancel transaction on-chain." ;
112
+ break ;
113
+ }
82
114
83
- const gasOverrides = await getDefaultGasOverrides ( sdk . getProvider ( ) ) ;
84
- transferTransactionResult = await sdk . wallet . sendRawTransaction ( {
85
- to : txData . fromAddress ! ,
86
- from : txData . fromAddress ! ,
87
- data : "0x" ,
88
- value : "0x00" ,
89
- nonce : txData . nonce ! ,
90
- ...gasOverrides ,
91
- maxFeePerGas : BigNumber . from ( gasOverrides . maxFeePerGas ) . mul ( 2 ) ,
92
- maxPriorityFeePerGas : BigNumber . from (
93
- gasOverrides . maxPriorityFeePerGas ,
94
- ) . mul ( 2 ) ,
95
- } ) ;
115
+ const gasOverrides = await getDefaultGasOverrides ( sdk . getProvider ( ) ) ;
116
+ transferTransactionResult = await sdk . wallet . sendRawTransaction ( {
117
+ to : txData . fromAddress ! ,
118
+ from : txData . fromAddress ! ,
119
+ data : "0x" ,
120
+ value : "0x00" ,
121
+ nonce : txData . nonce ! ,
122
+ ...gasOverrides ,
123
+ maxFeePerGas : BigNumber . from ( gasOverrides . maxFeePerGas ) . mul ( 2 ) ,
124
+ maxPriorityFeePerGas : BigNumber . from (
125
+ gasOverrides . maxPriorityFeePerGas ,
126
+ ) . mul ( 2 ) ,
127
+ } ) ;
96
128
97
- message = "Cancellation Transaction sent on chain successfully." ;
129
+ message = "Cancellation Transaction sent on chain successfully." ;
98
130
99
- await updateTx ( {
100
- queueId,
101
- data : {
102
- status : TransactionStatusEnum . Cancelled ,
103
- } ,
104
- } ) ;
105
- break ;
131
+ await updateTx ( {
132
+ queueId,
133
+ data : {
134
+ status : TransactionStatusEnum . Cancelled ,
135
+ } ,
136
+ } ) ;
137
+ break ;
138
+ }
139
+ default :
140
+ break ;
106
141
}
107
-
108
- default :
109
- break ;
110
142
}
111
143
112
144
if ( error ) {
0 commit comments