11"use client" ;
2- import Link from "next/link" ;
3- import { useState } from "react" ;
4- import { login } from "../actions" ;
5- import { useRouter , useSearchParams } from "next/navigation" ;
62import { createClient } from "@/utils/supabase/client" ;
3+ import { useRouter , useSearchParams } from "next/navigation" ;
4+ import { Suspense , useState } from "react" ;
75
8- const supabase = createClient ( ) ;
9- export default function Reset ( ) {
6+ function Reset ( ) {
7+ const router = useRouter ( ) ;
8+ const searchParams = useSearchParams ( ) ;
109 const [ error , setError ] = useState ( "" ) ;
1110 const [ code , setCode ] = useState ( "" ) ;
1211 const [ pending , setPending ] = useState ( false ) ;
13- const [ message , setMessage ] = useState < {
12+ const [ message , setMessage ] = useState < {
1413 type : string ;
1514 text : string ;
16- } | null > ( null ) ;
17- const router = useRouter ( ) ;
18- const searchParams = useSearchParams ( ) ;
19- const email = searchParams . get ( 'email' ) ;
20- const handelReset = async ( ) => {
21- setPending ( true ) ;
22- const otpCode = code ;
23- const { data, error} = await supabase . auth . verifyOtp ( { email :email , token :otpCode , type :"email" } )
24- if ( error ) {
25- setMessage ( { type :"error" , text :"invalid otp" } ) ;
26- }
27- else {
28- setMessage ( { type :"sucess" , text :"Valid Otp provided" } ) ;
29- setTimeout ( ( ) => {
15+ } | null > ( null ) ;
16+ const email = searchParams . get ( "email" ) ;
17+
18+ const handelReset = async ( ) => {
19+ setPending ( true ) ;
20+ const supabase = createClient ( ) ;
21+ const otpCode = code ;
22+ const { data, error } = await supabase . auth . verifyOtp ( {
23+ email : email ! ,
24+ token : otpCode ,
25+ type : "email" ,
26+ } ) ;
27+
28+ if ( error ) {
29+ setMessage ( { type : "error" , text : "invalid otp" } ) ;
30+ } else {
31+ setMessage ( { type : "sucess" , text : "Valid Otp provided" } ) ;
32+ setTimeout ( ( ) => {
3033 router . push ( "/auth/newpassword" ) ;
31- } , 1000 )
32- }
33- setPending ( false )
34- }
34+ } , 1000 ) ;
35+ }
36+ setPending ( false ) ;
37+ } ;
3538
3639 return (
3740 < div className = "flex flex-row border border-primary-500 bg-primary-200 rounded-2xl max-w-[650px] mx-auto" >
38- < form
39- className = "flex flex-col flex-1 border-r border-primary-500 rounded-2xl bg-white p-6"
40- >
41+ < form className = "flex flex-col flex-1 border-r border-primary-500 rounded-2xl bg-white p-6" >
4142 < p className = "text-primary-400 text-lg font-bold mb-3" > Verify OTP</ p >
4243 < p className = "mb-3" > Enter the otp you received on your email </ p >
43- { message ?. type === "error" && ( < p aria-live = "polite" className = "mb-3 text-red-600 text-center font-semibold" >
44- { message . text }
45- </ p > ) }
44+ { message ?. type === "error" && (
45+ < p
46+ aria-live = "polite"
47+ className = "mb-3 text-red-600 text-center font-semibold"
48+ >
49+ { message . text }
50+ </ p >
51+ ) }
4652
4753 < div className = "flex flex-col mb-5" >
4854 < label htmlFor = "otp" className = "mb-1" >
@@ -56,21 +62,34 @@ else{
5662 autoFocus
5763 autoComplete = "off"
5864 className = "p-2 border rounded-lg border-neutral-400 focus:border-primary-500 focus:ring-2 outline-none"
59- value = { code }
60- onChange = { ( e ) => setCode ( e . target . value ) }
65+ value = { code }
66+ onChange = { ( e ) => setCode ( e . target . value ) }
6167 />
6268 </ div >
6369 < button
6470 className = "bg-primary-700 text-white px-5 py-2 rounded-lg mt-5 disabled:bg-primary-400 disabled:cursor-not-allowed"
65- onClick = { handelReset }
66- disabled = { pending } >
67- { pending ?"Verifying..." :"Verify" }
71+ onClick = { handelReset }
72+ disabled = { pending }
73+ >
74+ { pending ? "Verifying..." : "Verify" }
6875 </ button >
69- { message ?. type === "success" && ( < p aria-live = "polite" className = "mt-3 text-[#4BB543] text-center font-semibold" >
70- { message . text }
71- </ p > ) }
76+ { message ?. type === "success" && (
77+ < p
78+ aria-live = "polite"
79+ className = "mt-3 text-[#4BB543] text-center font-semibold"
80+ >
81+ { message . text }
82+ </ p >
83+ ) }
7284 </ form >
7385 </ div >
74-
86+ ) ;
87+ }
88+
89+ export default function ResetPage ( ) {
90+ return (
91+ < Suspense >
92+ < Reset />
93+ </ Suspense >
7594 ) ;
7695}
0 commit comments