1
- import { useState , useEffect , ReactElement } from "react" ;
1
+ import { useState , useEffect , ReactElement , useCallback } from "react" ;
2
2
import { useTranslation } from "next-i18next" ;
3
3
import Loader from "@/components/ui/Loader" ;
4
4
import ArrowButton from "@/components/ui/button/Arrow" ;
@@ -10,6 +10,7 @@ import Head from "next/head";
10
10
import { useRouter } from "next/router" ;
11
11
import { verifyEmail } from "@/store/services/auth.service" ;
12
12
import { useDispatch } from "@/hooks/useTypedDispatch" ;
13
+ import { auth } from "@/config/firebase" ;
13
14
14
15
/**
15
16
* Email verification page
@@ -20,24 +21,29 @@ import { useDispatch } from "@/hooks/useTypedDispatch";
20
21
*/
21
22
export default function EmailVerification ( ) : ReactElement {
22
23
const { t } = useTranslation ( ) ;
23
- const [ verified , setVerified ] = useState ( true ) ;
24
+ const [ verified , setVerified ] = useState ( false ) ;
24
25
const router = useRouter ( ) ;
25
26
const { locale } = useRouter ( ) ;
26
27
const dispatch = useDispatch ( ) ;
27
28
29
+ const verify = useCallback ( async ( ) => {
30
+ const code = router . query . code as string ;
31
+ if ( ! code ) {
32
+ router . push ( "/404" ) ;
33
+ return ;
34
+ }
35
+ try {
36
+ await dispatch ( verifyEmail ( { locale : locale as string , payload : { code } } ) ) ;
37
+ await auth . currentUser ?. reload ( ) ;
38
+ setVerified ( true ) ;
39
+ } catch ( error ) {
40
+ console . error ( error ) ;
41
+ }
42
+ } , [ ] ) ;
43
+
28
44
useEffect ( ( ) => {
29
- const verify = async ( ) => {
30
- const code = router . query . code as string ;
31
- if ( ! code ) return ;
32
- try {
33
- await dispatch ( verifyEmail ( { locale : locale as string , payload : { code } } ) ) ;
34
- setVerified ( true ) ;
35
- } catch ( error ) {
36
- console . error ( error ) ;
37
- }
38
- } ;
39
45
verify ( ) ;
40
- } , [ dispatch , locale , router . query . code ] ) ;
46
+ } , [ verify ] ) ;
41
47
42
48
const goHome = ( ) => {
43
49
router . push ( "/login" ) ;
0 commit comments