diff --git a/src/pages/(register)/RegisterIndividual.tsx b/src/pages/(register)/RegisterIndividual.tsx index 9fbd7bf4..3a2b2195 100644 --- a/src/pages/(register)/RegisterIndividual.tsx +++ b/src/pages/(register)/RegisterIndividual.tsx @@ -4,21 +4,22 @@ import Input from "@/components/Low/Input"; import {User} from "@/interfaces/user"; import {sendEmailVerification} from "@/utils/email"; import axios from "axios"; -import {useState} from "react"; +import {useEffect, useState} from "react"; import {toast} from "react-toastify"; import {KeyedMutator} from "swr"; interface Props { queryCode?: string; + defaultEmail?: string; isLoading: boolean; setIsLoading: (isLoading: boolean) => void; mutateUser: KeyedMutator; sendEmailVerification: typeof sendEmailVerification; } -export default function RegisterIndividual({queryCode, isLoading, setIsLoading, mutateUser, sendEmailVerification}: Props) { +export default function RegisterIndividual({queryCode, defaultEmail, isLoading, setIsLoading, mutateUser, sendEmailVerification}: Props) { const [name, setName] = useState(""); - const [email, setEmail] = useState(""); + const [email, setEmail] = useState(defaultEmail || ""); const [password, setPassword] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [code, setCode] = useState(queryCode || ""); @@ -73,7 +74,15 @@ export default function RegisterIndividual({queryCode, isLoading, setIsLoading, return (
setName(e)} placeholder="Enter your name" defaultValue={name} required /> - setEmail(e)} placeholder="Enter email address" defaultValue={email} required /> + setEmail(e)} + placeholder="Enter email address" + value={email} + disabled={!!defaultEmail} + required + /> index) { + await setDoc(codeRef, {email: emails[index]}, {merge: true}); + const transport = prepareMailer(); const mailOptions = prepareMailOptions( { diff --git a/src/pages/register.tsx b/src/pages/register.tsx index 0d397888..9299efab 100644 --- a/src/pages/register.tsx +++ b/src/pages/register.tsx @@ -1,6 +1,6 @@ /* eslint-disable @next/next/no-img-element */ import {ToastContainer} from "react-toastify"; -import {useState} from "react"; +import {useEffect, useState} from "react"; import Head from "next/head"; import useUser from "@/hooks/useUser"; import Link from "next/link"; @@ -11,6 +11,7 @@ import RegisterCorporate from "./(register)/RegisterCorporate"; import EmailVerification from "./(auth)/EmailVerification"; import {sendEmailVerification} from "@/utils/email"; import useUsers from "@/hooks/useUsers"; +import axios from "axios"; export const getServerSideProps = (context: any) => { const {code} = context.query; @@ -21,8 +22,17 @@ export const getServerSideProps = (context: any) => { }; export default function Register({code: queryCode}: {code: string}) { + const [defaultEmail, setDefaultEmail] = useState(); const [isLoading, setIsLoading] = useState(false); + useEffect(() => { + if (queryCode) { + (async () => { + axios.get<{email?: string}>(`/api/code/${queryCode}`).then((result) => setDefaultEmail(result.data.email)); + })(); + } + }, [queryCode]); + const {user, mutateUser} = useUser({ redirectTo: "/", redirectIfFound: true, @@ -79,11 +89,13 @@ export default function Register({code: queryCode}: {code: string}) {