@@ -27,7 +27,7 @@ const useWaitForConfirmationStyles = makeStyles((theme) =>
27
27
} ) ,
28
28
)
29
29
30
- const WaitForConfirmation : React . FC < { onComplete : ( ) => void } > = ( { onComplete } ) => {
30
+ const WaitForConfirmation : React . FC = ( ) => {
31
31
const classes = useWaitForConfirmationStyles ( )
32
32
33
33
return (
@@ -39,11 +39,6 @@ const WaitForConfirmation: React.FC<{ onComplete: () => void }> = ({ onComplete
39
39
</ div >
40
40
41
41
< Typography className = { classes . title } > Confirm transaction in your wallet</ Typography >
42
- < Box >
43
- < AltPrimaryButton id = "confirm-tx-btn" onClick = { onComplete } fullWidth >
44
- Simulate confirm transaction
45
- </ AltPrimaryButton >
46
- </ Box >
47
42
</ Box >
48
43
)
49
44
}
@@ -87,6 +82,9 @@ const useTxStatusStyles = makeStyles({
87
82
fontWeight : 700 ,
88
83
letterSpacing : '-0.01em' ,
89
84
} ,
85
+ errorMessage : {
86
+ fontSize : '18px' ,
87
+ } ,
90
88
stepLabel : {
91
89
fontSize : '16px' ,
92
90
color : 'rgba(255, 255, 255, 0.7)' ,
@@ -96,9 +94,12 @@ const useTxStatusStyles = makeStyles({
96
94
fontWeight : 700 ,
97
95
color : 'rgba(255, 255, 255, 1)' ,
98
96
} ,
97
+ buttonMargin : {
98
+ marginTop : '32px' ,
99
+ } ,
99
100
} )
100
101
101
- const TxStatus : React . FC < { onComplete : ( ) => void } > = ( { onComplete } ) => {
102
+ const TxStatusSuccess : React . FC < { onComplete : ( ) => void } > = ( { onComplete } ) => {
102
103
const classes = useTxStatusStyles ( )
103
104
const stepperClasses = useStepperStyles ( )
104
105
@@ -131,6 +132,23 @@ const TxStatus: React.FC<{ onComplete: () => void }> = ({ onComplete }) => {
131
132
)
132
133
}
133
134
135
+ const TxStatusFail : React . FC < { message : string ; onBackClick : ( ) => void } > = ( { message, onBackClick } ) => {
136
+ const classes = useTxStatusStyles ( )
137
+
138
+ return (
139
+ < Box display = "flex" flexDirection = "column" gridGap = "24px" >
140
+ < Typography className = { classes . title } > Deposit failed!</ Typography >
141
+ < Typography variant = "body1" className = { classes . errorMessage } >
142
+ { message }
143
+ </ Typography >
144
+
145
+ < AltPrimaryButton id = "go-back-btn" onClick = { onBackClick } fullWidth className = { classes . buttonMargin } >
146
+ Go back
147
+ </ AltPrimaryButton >
148
+ </ Box >
149
+ )
150
+ }
151
+
134
152
const useModalStyles = makeStyles ( ( theme ) =>
135
153
createStyles ( {
136
154
container : {
@@ -154,23 +172,48 @@ type DepositPreviewModalProps = {
154
172
155
173
const DepositPreviewModal : React . FC < DepositPreviewModalProps > = ( { isOpen, onClose, squeethToMint } ) => {
156
174
const [ activeStep , setActiveStep ] = React . useState ( 0 )
175
+ const [ txError , setTxError ] = React . useState ( '' )
157
176
158
- const handleNext = ( ) => setActiveStep ( ( prevActiveStep ) => prevActiveStep + 1 )
177
+ const toConfirmationStep = ( ) => setActiveStep ( 1 )
178
+ const toTxStatusStep = ( ) => setActiveStep ( 2 )
159
179
const resetStep = ( ) => setActiveStep ( 0 )
160
180
161
181
const handleClose = ( ) => {
182
+ setTxError ( '' )
162
183
resetStep ( )
163
184
onClose ( )
164
185
}
165
186
187
+ const handleTxFail = ( message : string ) => {
188
+ setTxError ( message )
189
+ toTxStatusStep ( )
190
+ }
191
+
192
+ const resetErrorAndGoBack = ( ) => {
193
+ setTxError ( '' )
194
+ resetStep
195
+ }
196
+
166
197
const classes = useModalStyles ( )
167
198
168
199
return (
169
200
< Modal open = { isOpen } onClose = { handleClose } aria-labelledby = "modal-title" >
170
201
< Box className = { classes . container } >
171
- { activeStep === 0 && < LpSettings onComplete = { handleNext } squeethToMint = { squeethToMint } /> }
172
- { activeStep === 1 && < WaitForConfirmation onComplete = { handleNext } /> }
173
- { activeStep === 2 && < TxStatus onComplete = { handleClose } /> }
202
+ { activeStep === 0 && (
203
+ < LpSettings
204
+ squeethToMint = { squeethToMint }
205
+ onConfirm = { toConfirmationStep }
206
+ onTxSuccess = { toTxStatusStep }
207
+ onTxFail = { ( message ) => handleTxFail ( message ) }
208
+ />
209
+ ) }
210
+ { activeStep === 1 && < WaitForConfirmation /> }
211
+ { activeStep === 2 &&
212
+ ( ! ! txError ? (
213
+ < TxStatusFail message = { txError } onBackClick = { resetErrorAndGoBack } />
214
+ ) : (
215
+ < TxStatusSuccess onComplete = { handleClose } />
216
+ ) ) }
174
217
</ Box >
175
218
</ Modal >
176
219
)
0 commit comments