PK ! A7��n import 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 (
{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;