import { ScrollView, Text, View, Image, Alert, } from "react-native"; import tw from "twrnc"; import InputField from "@/components/InputField"; import { images, icons } from "@/constants"; import { useState } from "react"; import CustomButton from "@/components/CustomButton"; import { Link, router } from "expo-router"; import OAuth from "@/components/OAuth"; import { useSignUp } from "@clerk/clerk-expo"; import { ReactNativeModal } from "react-native-modal"; import { fetchAPI } from "@/lib/fetch"; import { TokenCache } from "@/lib/auth"; const SignUp = () => { const { isLoaded, signUp, setActive } = useSignUp(); const [showSuccessModal,setShowSuccessModal]= useState(false); const [form, setForm] = useState({ name: "", email: "", password: "", }); const [verification, setVerification] = useState({ state: "default", error: "", code: "", }) const onSignUpPress = async () => { if (!isLoaded){ return;} try { await signUp.create({ emailAddress: form.email, password: form.password, }) await signUp.prepareEmailAddressVerification({ strategy: "email_code" }) setVerification({ ...verification, state: "pending" }) } catch (err:any) { Alert.alert("Error",err.errors[0].longMessage) } } const onVerifyPress = async () => { if (!isLoaded) return; try { const CompleteSignUp = await signUp.attemptEmailAddressVerification({ code: verification.code, }) if (CompleteSignUp.status === "complete") { const clerkId=signUp.createdUserId; const response= await fetchAPI("http://192.168.29.1:3000/api/users",{ method:"POST", headers:{"Content-Type":"application/json"}, body:JSON.stringify({ name:form.name, email:form.email, clerkId, }), }); console.log("User API Response:", response); await setActive({ session: CompleteSignUp.createdSessionId }); setVerification({ ...verification, state: "success" }) } else { setVerification({ ...verification, error: "Verification failed.", state: "failed" }) } } catch (err: any) { setVerification({ ...verification, error: err.errors[0].longMessage, state: "success" }) } } return ( Create Your Account setForm({ ...form, name: value })} /> setForm({ ...form, email: value })} /> setForm({ ...form, password: value })} /> Already Have an Account? Log In {if(verification.state==="success") setShowSuccessModal(true)} } > Verification We've sent a verification code to {form.email} setVerification ({... verification,code}) } /> {verification.error && ( {verification.error} )} Verified You have successfully verified your account. {setShowSuccessModal(false); router.push("/(root)/(tabs)/home")}} style={tw`mt-5`} /> ); }; export default SignUp;