DeleteBookmarkFolderModal.tsx 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import React, { FC } from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import {
  4. Modal, ModalBody, ModalFooter, ModalHeader,
  5. } from 'reactstrap';
  6. import { deleteBookmarkFolder } from '~/client/util/bookmark-utils';
  7. import { toastError } from '~/client/util/toastr';
  8. import { FolderIcon } from '~/components/Icons/FolderIcon';
  9. import { useBookmarkFolderDeleteModal } from '~/stores/modal';
  10. const DeleteBookmarkFolderModal: FC = () => {
  11. const { t } = useTranslation();
  12. const { data: deleteBookmarkFolderModalData, close: closeBookmarkFolderDeleteModal } = useBookmarkFolderDeleteModal();
  13. const isOpened = deleteBookmarkFolderModalData?.isOpened ?? false;
  14. async function deleteBookmark() {
  15. if (deleteBookmarkFolderModalData == null || deleteBookmarkFolderModalData.bookmarkFolder == null) {
  16. return;
  17. }
  18. if (deleteBookmarkFolderModalData.bookmarkFolder != null) {
  19. try {
  20. await deleteBookmarkFolder(deleteBookmarkFolderModalData.bookmarkFolder._id);
  21. const onDeleted = deleteBookmarkFolderModalData.opts?.onDeleted;
  22. if (onDeleted != null) {
  23. onDeleted(deleteBookmarkFolderModalData.bookmarkFolder._id);
  24. }
  25. closeBookmarkFolderDeleteModal();
  26. }
  27. catch (err) {
  28. toastError(err);
  29. }
  30. }
  31. }
  32. async function onClickDeleteButton() {
  33. await deleteBookmark();
  34. }
  35. return (
  36. <Modal size="md" isOpen={isOpened} toggle={closeBookmarkFolderDeleteModal} data-testid="page-delete-modal" className="grw-create-page">
  37. <ModalHeader tag="h4" toggle={closeBookmarkFolderDeleteModal} className="bg-danger text-light">
  38. <i className="icon-fw icon-trash"></i>
  39. {t('bookmark_folder.delete_modal.modal_header_label')}
  40. </ModalHeader>
  41. <ModalBody>
  42. <div className="form-group pb-1">
  43. <label>{ t('bookmark_folder.delete_modal.modal_body_description') }:</label><br />
  44. <FolderIcon isOpen={false} /> {deleteBookmarkFolderModalData?.bookmarkFolder?.name}
  45. </div>
  46. {t('bookmark_folder.delete_modal.modal_body_alert')}
  47. </ModalBody>
  48. <ModalFooter>
  49. <button
  50. type="button"
  51. className="btn btn-danger"
  52. onClick={onClickDeleteButton}
  53. >
  54. <i className="mr-1 icon-trash" aria-hidden="true"></i>
  55. {t('bookmark_folder.delete_modal.modal_footer_button')}
  56. </button>
  57. </ModalFooter>
  58. </Modal>
  59. );
  60. };
  61. export { DeleteBookmarkFolderModal };