DeleteBookmarkFolderModal.tsx 2.5 KB

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