PK!A7��nimport React, { useState, useEffect } from "react"; import tw from "tailwind-styled-components"; import { Link, useParams, useNavigate } from "react-router-dom"; import Images from "../Images"; import { useMutation, useQuery } from "react-query"; import axios from "axios"; import Config from "../Config"; import Loading from "../Components/Loading"; import Table from "../Components/EmailIdManagement/Table"; import { Page, BoxContainer, BoxTitle, Underline, ErrorText, } from "../Components/Styles/PageStyles"; import NotFoundModel from "../Components/NotFoundModel"; import { SmallBtn } from "../Components/Styles/InputStyles"; import DeleteModel from "../Components/EmailIdManagement/DeleteModel"; import { useSelector } from "react-redux"; import { ForUs } from "../Config"; import EditDeviceModel from "../Components/EmailIdManagement/EditDeviceModel"; import SingleEntry from "../Components/EmailIdManagement/SingleEntry"; import { MdAdd } from "react-icons/md"; import { HiUpload } from "react-icons/hi"; import RequestModel from "../Components/EmailIdManagement/RequestModel"; import { toast } from "react-toastify"; import ViewModel from "../Components/EmailIdManagement/ViewModel"; const EmailIdManagement = () => { const user = useSelector((state) => state.UserReducer.user); const [openUploadModel, setOpenUploadModel] = useState(false); const [viewModel, setViewModel] = useState(false); const [openDeleteModel, setOpenDeleteModel] = useState(false); const [deviceId, setDeviceId] = useState(""); const [selectedItem, setSelectedItem] = useState(""); const [editDevice, setEditDevice] = useState(false); const navigate = useNavigate(); // ----- Getting Initial Data ------ const fetchFunction = async () => await axios.get( `${Config.nodeApiUrl}/allEmailSenderIds`, Config.AxiosConfig ); const { isLoading, error, data, refetch, isRefetching } = useQuery( "allEmailSenderIds", fetchFunction ); //------- Add Single Entry ------- const SingleEntryPostFunction = async (values) => await axios.post( `${Config.nodeApiUrl}/requestEmailSenderId`, values, Config.AxiosConfig ); const onSingleEntrySuccess = (data) => { refetch(); setDeviceId(""); setOpenUploadModel(false); toast.success(data?.data?.msg || "Success"); }; const onSingleEntryError = (data) => { setOpenUploadModel(false); setDeviceId(""); toast.error(data?.response?.data?.msg || "An Error Occured"); }; const { isLoading: SingleEntryLoading, mutate: postSingleEntry } = useMutation(SingleEntryPostFunction, { onSuccess: onSingleEntrySuccess, onError: onSingleEntryError, }); //------- Edit Single Entry ------- const EditSingleEntryFunction = async (values) => await axios.post( `${Config.nodeApiUrl}/editEmailSenderIds`, values, Config.AxiosConfig ); const onEditEntrySuccess = (data) => { refetch(); setDeviceId(""); setEditDevice(false); toast.success(data?.data?.msg || "Success"); }; const onEditEntryError = (data) => { setEditDevice(false); setDeviceId(""); toast.error(data?.response?.data?.msg || "An Error Occured"); }; const { isLoading: editEntryLoading, mutate: editSingleEntry } = useMutation( EditSingleEntryFunction, { onSuccess: onEditEntrySuccess, onError: onEditEntryError, } ); //------- Delete Single Entry ------- const deleteSingleEntryFunction = async (values) => await axios.post( `${Config.nodeApiUrl}/deleteEmailSenderId`, values, Config.AxiosConfig ); const onDeleteEntrySuccess = (data) => { refetch(); setSelectedItem(""); setOpenDeleteModel(false); toast.success(data?.data?.msg || "Success"); }; const onDeleteEntryError = (data) => { setOpenDeleteModel(false); setSelectedItem(""); toast.error(data?.response?.data?.msg || "An Error Occured"); }; const { isLoading: deleteEntryLoading, mutate: deleteSingleEntry } = useMutation(deleteSingleEntryFunction, { onSuccess: onDeleteEntrySuccess, onError: onDeleteEntryError, }); return (
Email Id Management
{openUploadModel && ( )} {editDevice && ( )} {openDeleteModel && ( )} {viewModel && ( )} {!isLoading && !isRefetching && ( )} {(isLoading || isRefetching) && } {error && !isLoading && } ); }; const Uploader = ({ setOpenUploadModel }) => { return ( {/* */} ); }; const TableWrapper = tw.h1`my-10 border rounded-md overflow-auto`; const Title = tw.h1`text-xl text-gray-800 whitespace-nowrap font-medium`; const UploadWrapper = tw.div` w-full flex justify-end space-x-4 items-center `; const Button = tw.button`text-white bg-teal-500 hover:bg-teal-600 w-40 flex items-center space-x-1 justify-center h-10 text-xs whitespace-nowrap rounded`; export default EmailIdManagement;