import type { BlitzPage } from "blitz"; import { useRouter, Routes, useMutation, Link } from "blitz"; import BaseLayout from "../../core/layouts/base-layout"; import { AuthForm as Form, FORM_ERROR } from "../components/auth-form"; import { LabeledTextField } from "../components/labeled-text-field"; import signup from "../mutations/signup"; import { Signup } from "../validations"; const SignUp: BlitzPage = () => { const router = useRouter(); const [signupMutation] = useMutation(signup); return (
Already have an account? ), submit: "Sign up", }} schema={Signup} initialValues={{ email: "", password: "" }} onSubmit={async (values) => { try { await signupMutation(values); router.push(Routes.StepOne()); } catch (error: any) { if (error.code === "P2002" && error.meta?.target?.includes("email")) { // This error comes from Prisma return { email: "This email is already being used" }; } else { return { [FORM_ERROR]: error.toString() }; } } }} > ); }; SignUp.redirectAuthenticatedTo = Routes.StepOne(); SignUp.getLayout = (page) => {page}; export default SignUp;