From 099b2a39b4182f95611fa4d24fff3cf230516dd2 Mon Sep 17 00:00:00 2001 From: anik-ghosh-au7 Date: Sat, 30 Jul 2022 22:47:00 +0530 Subject: [PATCH] feat: add delete email template modal --- .../components/DeleteEmailTemplateModal.tsx | 106 ++++++++++++++++++ dashboard/src/pages/EmailTemplates.tsx | 12 ++ 2 files changed, 118 insertions(+) create mode 100644 dashboard/src/components/DeleteEmailTemplateModal.tsx diff --git a/dashboard/src/components/DeleteEmailTemplateModal.tsx b/dashboard/src/components/DeleteEmailTemplateModal.tsx new file mode 100644 index 0000000..01d429f --- /dev/null +++ b/dashboard/src/components/DeleteEmailTemplateModal.tsx @@ -0,0 +1,106 @@ +import React from 'react'; +import { + Button, + Center, + Flex, + MenuItem, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalFooter, + ModalHeader, + ModalOverlay, + useDisclosure, + Text, + useToast, +} from '@chakra-ui/react'; +import { useClient } from 'urql'; +import { FaRegTrashAlt } from 'react-icons/fa'; +import { DeleteEmailTemplate } from '../graphql/mutation'; +import { capitalizeFirstLetter } from '../utils'; + +interface deleteEmailTemplateModalInputPropTypes { + emailTemplateId: string; + eventName: string; + fetchEmailTemplatesData: Function; +} + +const DeleteEmailTemplateModal = ({ + emailTemplateId, + eventName, + fetchEmailTemplatesData, +}: deleteEmailTemplateModalInputPropTypes) => { + const client = useClient(); + const toast = useToast(); + const { isOpen, onOpen, onClose } = useDisclosure(); + + const deleteHandler = async () => { + const res = await client + .mutation(DeleteEmailTemplate, { params: { id: emailTemplateId } }) + .toPromise(); + if (res.error) { + toast({ + title: capitalizeFirstLetter(res.error.message), + isClosable: true, + status: 'error', + position: 'bottom-right', + }); + + return; + } else if (res.data?._delete_email_template) { + toast({ + title: capitalizeFirstLetter(res.data?._delete_email_template.message), + isClosable: true, + status: 'success', + position: 'bottom-right', + }); + } + onClose(); + fetchEmailTemplatesData(); + }; + return ( + <> + Delete + + + + Delete Email Template + + + Are you sure? + + + Email template for event {eventName} will be deleted + permanently! + + + + + + + + + + + ); +}; + +export default DeleteEmailTemplateModal; diff --git a/dashboard/src/pages/EmailTemplates.tsx b/dashboard/src/pages/EmailTemplates.tsx index 6b2990f..9058003 100644 --- a/dashboard/src/pages/EmailTemplates.tsx +++ b/dashboard/src/pages/EmailTemplates.tsx @@ -42,6 +42,7 @@ import { } from '../constants'; import { EmailTemplatesQuery, WebhooksDataQuery } from '../graphql/queries'; import dayjs from 'dayjs'; +import DeleteEmailTemplateModal from '../components/DeleteEmailTemplateModal'; interface paginationPropTypes { limit: number; @@ -174,6 +175,17 @@ const EmailTemplates = () => { selectedTemplate={templateData} fetchEmailTemplatesData={fetchEmailTemplatesData} /> +