import { Box, IconButton, Link, Typography, useMediaQuery, useTheme } from "@mui/material"; import { useNavigate } from "react-router-dom"; import { useFormik } from "formik"; import CloseIcon from "@mui/icons-material/Close"; import CustomButton from "@components/CustomButton"; import InputTextfield from "@components/InputTextfield"; import PenaLogo from "@components/PenaLogo"; import { useSnackbar } from "notistack"; import {authStore} from "@stores/makeRequest"; interface Values { login: string; email: string; phoneNumber: string; password: string; repeatPassword: string; } // TODO function validate(values: Values) { const errors = {} as any; if (!values.login) { errors.login = "Required"; } else if (!/^[\w-]{3,25}$/i.test(values.login)) { errors.login = "Invalid username"; } if (!values.password) { errors.password = "Required"; } else if (!/^[\w-]{8,25}$/i.test(values.password)) { errors.password = "Invalid password"; } if (values.password !== values.repeatPassword) { errors.repeatPassword = "Passwords do not match"; } return errors; } export default function Signup() { const { enqueueSnackbar } = useSnackbar(); const theme = useTheme(); const upMd = useMediaQuery(theme.breakpoints.up("md")); const navigate = useNavigate(); const { makeRequest } = authStore() const formik = useFormik({ initialValues: { login: "", email: "", phoneNumber: "", password: "", repeatPassword: "", }, validate, onSubmit: async (values: Values) => { makeRequest({ url: "https://hub.pena.digital/auth/register", body: { "login": values.email, "email": values.email, "password": values.repeatPassword, "phoneNumber": "--" }, useToken: false }) .catch((e:any) => { console.log(e) enqueueSnackbar(e.response && e.response.data && e.response.data.message ? e.response.data.message : `Unknown error`) }) }, }); function handleClose() { navigate("/"); } return ( Регистрация {/* */} Зарегистрироваться Вход в личный кабинет ); }