feat: add delete email template modal
This commit is contained in:
parent
2d07baedf4
commit
099b2a39b4
106
dashboard/src/components/DeleteEmailTemplateModal.tsx
Normal file
106
dashboard/src/components/DeleteEmailTemplateModal.tsx
Normal file
|
@ -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 (
|
||||
<>
|
||||
<MenuItem onClick={onOpen}>Delete</MenuItem>
|
||||
<Modal isOpen={isOpen} onClose={onClose}>
|
||||
<ModalOverlay />
|
||||
<ModalContent>
|
||||
<ModalHeader>Delete Email Template</ModalHeader>
|
||||
<ModalCloseButton />
|
||||
<ModalBody>
|
||||
<Text fontSize="md">Are you sure?</Text>
|
||||
<Flex
|
||||
padding="5%"
|
||||
marginTop="5%"
|
||||
marginBottom="2%"
|
||||
border="1px solid #ff7875"
|
||||
borderRadius="5px"
|
||||
flexDirection="column"
|
||||
>
|
||||
<Text fontSize="sm">
|
||||
Email template for event <b>{eventName}</b> will be deleted
|
||||
permanently!
|
||||
</Text>
|
||||
</Flex>
|
||||
</ModalBody>
|
||||
|
||||
<ModalFooter>
|
||||
<Button
|
||||
leftIcon={<FaRegTrashAlt />}
|
||||
colorScheme="red"
|
||||
variant="solid"
|
||||
onClick={deleteHandler}
|
||||
isDisabled={false}
|
||||
>
|
||||
<Center h="100%" pt="5%">
|
||||
Delete
|
||||
</Center>
|
||||
</Button>
|
||||
</ModalFooter>
|
||||
</ModalContent>
|
||||
</Modal>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeleteEmailTemplateModal;
|
|
@ -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}
|
||||
/>
|
||||
<DeleteEmailTemplateModal
|
||||
emailTemplateId={
|
||||
templateData[EmailTemplateInputDataFields.ID]
|
||||
}
|
||||
eventName={
|
||||
templateData[
|
||||
EmailTemplateInputDataFields.EVENT_NAME
|
||||
]
|
||||
}
|
||||
fetchEmailTemplatesData={fetchEmailTemplatesData}
|
||||
/>
|
||||
</MenuList>
|
||||
</Menu>
|
||||
</Td>
|
||||
|
|
Loading…
Reference in New Issue
Block a user