@@ -33,6 +33,7 @@ export const PasswordResetModal = ({
33
33
onSendEmail,
34
34
onVerifyCode,
35
35
onResetPassword,
36
+ onResendCode,
36
37
isLoading = false ,
37
38
} : PasswordResetModalProps ) => {
38
39
const [ state , setState ] = useState < PasswordResetState > ( {
@@ -49,21 +50,10 @@ export const PasswordResetModal = ({
49
50
const intervalRef = useRef < ReturnType < typeof setInterval > | null > ( null ) ;
50
51
51
52
useEffect ( ( ) => {
52
- if ( isOpen ) {
53
- setState ( {
54
- step : 1 ,
55
- emailInput : email ,
56
- code : Array ( 6 ) . fill ( "" ) ,
57
- password : "" ,
58
- errorMessage : "" ,
59
- isResendDisabled : true ,
60
- timer : 60 ,
61
- } ) ;
62
- }
63
- } , [ isOpen , email ] ) ;
53
+ if ( state . step === 2 ) {
54
+ timerRef . current = 60 ;
55
+ setState ( ( prev ) => ( { ...prev , timer : timerRef . current , isResendDisabled : true } ) ) ;
64
56
65
- useEffect ( ( ) => {
66
- if ( state . isResendDisabled ) {
67
57
intervalRef . current = setInterval ( ( ) => {
68
58
if ( timerRef . current <= 1 ) {
69
59
clearInterval ( intervalRef . current ! ) ;
@@ -79,7 +69,7 @@ export const PasswordResetModal = ({
79
69
return ( ) => {
80
70
if ( intervalRef . current ) clearInterval ( intervalRef . current ) ;
81
71
} ;
82
- } , [ state . isResendDisabled ] ) ;
72
+ } , [ state . step ] ) ;
83
73
84
74
const handleCodeChange = ( e : React . FormEvent < HTMLInputElement > , index : number ) => {
85
75
const inputElement = e . currentTarget ;
@@ -205,7 +195,11 @@ export const PasswordResetModal = ({
205
195
</ div >
206
196
</ >
207
197
) : (
208
- < span > Didn’t receive code? Continue</ span >
198
+ < >
199
+ < span > Didn’t receive code?{ " " }
200
+ < a onClick = { ( ) => onResendCode ( ) . catch ( console . error ) } className = { styles [ "resend-link" ] } > Send again</ a >
201
+ </ span >
202
+ </ >
209
203
) }
210
204
</ div >
211
205
</ >
@@ -234,4 +228,4 @@ export const PasswordResetModal = ({
234
228
</ div >
235
229
</ div >
236
230
) ;
237
- } ;
231
+ } ;
0 commit comments