import React, { useState, useEffect } from "react"; import * as Yup from "yup"; import { Formik, Form, Field } from "formik"; import { toast } from "react-toastify"; import { makeStyles } from "@material-ui/core/styles"; import { green } from "@material-ui/core/colors"; import Button from "@material-ui/core/Button"; import TextField from "@material-ui/core/TextField"; import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import CircularProgress from "@material-ui/core/CircularProgress"; import { i18n } from "../../translate/i18n"; import api from "../../services/api"; import toastError from "../../errors/toastError"; const useStyles = makeStyles((theme) => ({ root: { display: "flex", flexWrap: "wrap", }, multFieldLine: { display: "flex", "& > *:not(:last-child)": { marginRight: theme.spacing(1), }, }, btnWrapper: { position: "relative", }, buttonProgress: { color: green[500], position: "absolute", top: "50%", left: "50%", marginTop: -12, marginLeft: -12, }, formControl: { margin: theme.spacing(1), minWidth: 120, }, })); const ContactListSchema = Yup.object().shape({ name: Yup.string() .min(2, i18n.t("contactLists.dialog.nameShort")) .max(50, i18n.t("contactLists.dialog.nameLong")) .required(i18n.t("contactLists.dialog.nameRequired")), }); const ContactListModal = ({ open, onClose, contactListId }) => { const classes = useStyles(); const initialState = { name: "", }; const [contactList, setContactList] = useState(initialState); useEffect(() => { const fetchContactList = async () => { if (!contactListId) return; try { const { data } = await api.get(`/contact-lists/${contactListId}`); setContactList((prevState) => { return { ...prevState, ...data }; }); } catch (err) { toastError(err); } }; fetchContactList(); }, [contactListId, open]); const handleClose = () => { onClose(); setContactList(initialState); }; const handleSaveContactList = async (values) => { const contactListData = { ...values }; try { if (contactListId) { await api.put(`/contact-lists/${contactListId}`, contactListData); } else { await api.post("/contact-lists", contactListData); } toast.success(i18n.t("contactList.toasts.success")); } catch (err) { toastError(err); } handleClose(); }; return (