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 { Dialog, DialogContent, DialogTitle, Button, DialogActions, CircularProgress, TextField, Switch, FormControlLabel, } from "@material-ui/core"; import api from "../../services/api"; import { i18n } from "../../translate/i18n"; import toastError from "../../errors/toastError"; import QueueSelect from "../QueueSelect"; 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, }, })); const SessionSchema = Yup.object().shape({ name: Yup.string() .min(2, "Too Short!") .max(50, "Too Long!") .required("Required"), }); const WhatsAppModal = ({ open, onClose, whatsAppId }) => { const classes = useStyles(); const initialState = { name: "", greetingMessage: "", farewellMessage: "", isDefault: false, }; const [whatsApp, setWhatsApp] = useState(initialState); const [selectedQueueIds, setSelectedQueueIds] = useState([]); useEffect(() => { const fetchSession = async () => { if (!whatsAppId) return; try { const { data } = await api.get(`whatsapp/${whatsAppId}`); setWhatsApp(data); const whatsQueueIds = data.queues?.map(queue => queue.id); setSelectedQueueIds(whatsQueueIds); } catch (err) { toastError(err); } }; fetchSession(); }, [whatsAppId]); const handleSaveWhatsApp = async values => { const whatsappData = { ...values, queueIds: selectedQueueIds }; try { if (whatsAppId) { await api.put(`/whatsapp/${whatsAppId}`, whatsappData); } else { await api.post("/whatsapp", whatsappData); } toast.success(i18n.t("whatsappModal.success")); handleClose(); } catch (err) { toastError(err); } }; const handleClose = () => { onClose(); setWhatsApp(initialState); }; return (