import { Box, Dialog, IconButton, Link, Typography, useMediaQuery, useTheme } from "@mui/material"; import { useLocation, 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"; import { Link as RouterLink } from "react-router-dom"; import { object, ref, string } from "yup"; import { ChangeEvent, useState } from "react"; interface Values { email: string; phoneNumber: string; password: string; repeatPassword: string; } const initialValues: Values = { email: "", phoneNumber: "", password: "", repeatPassword: "", }; const validationSchema = object({ email: string().email("Введите email").required("Поле обязательно"), phoneNumber: string().matches(/^\+\d{5,}|\d{6,}$/, "Введите номер телефона").required("Поле обязательно"), password: string().min(8, "Минимум 8 символов").required("Поле обязательно"), repeatPassword: string().oneOf([ref("password"), undefined], "Пароли не совпадают"), }); export default function SignupDialog() { const [isDialogOpen, setIsDialogOpen] = useState(true); const { enqueueSnackbar } = useSnackbar(); const theme = useTheme(); const upMd = useMediaQuery(theme.breakpoints.up("md")); const navigate = useNavigate(); const makeRequest = authStore(state => state.makeRequest); const location = useLocation(); const formik = useFormik({ initialValues, validationSchema, 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?.data?.message ?? `Unknown error`); }); }, }); function handleClose() { setIsDialogOpen(false); setTimeout(() => navigate("/"), theme.transitions.duration.leavingScreen); } function handlePhoneNumberChange(e: ChangeEvent) { if (/^\+?\d*$/.test(e.target.value)) formik.setFieldValue("phoneNumber", e.target.value); } return ( Регистрация Зарегистрироваться Вход в личный кабинет ); }