import { Anchor, Button, Container, Paper, PasswordInput, Text, TextInput, Title, } from "@mantine/core"; import { useForm, yupResolver } from "@mantine/form"; import Link from "next/link"; import { useRouter } from "next/router"; import * as yup from "yup"; import useConfig from "../../hooks/config.hook"; import useUser from "../../hooks/user.hook"; import authService from "../../services/auth.service"; import userService from "../../services/user.service"; import toast from "../../utils/toast.util"; const SignUpForm = () => { const config = useConfig(); const router = useRouter(); const { setUser } = useUser(); const validationSchema = yup.object().shape({ email: yup.string().email().required(), username: yup.string().min(3).required(), password: yup.string().min(8).required(), }); const form = useForm({ initialValues: { email: "", username: "", password: "", }, validate: yupResolver(validationSchema), }); const signUp = async (email: string, username: string, password: string) => { await authService .signUp(email, username, password) .then(async () => { setUser(await userService.getCurrentUser()); router.replace("/"); }) .catch(toast.axiosError); }; return ( ({ fontFamily: `Greycliff CF, ${theme.fontFamily}`, fontWeight: 900, })} > Sign up {config.get("ALLOW_REGISTRATION") && ( You have an account already?{" "} Sign in )}
signUp(values.email, values.username, values.password) )} >
); }; export default SignUpForm;