import type { FC } from 'react'; import { useCallback } from 'react'; import { useTranslation } from 'next-i18next'; import { Modal, ModalBody, ModalFooter, ModalHeader, } from 'reactstrap'; import { FolderIcon } from '~/client/components/Icons/FolderIcon'; import { deleteBookmarkFolder } from '~/client/util/bookmark-utils'; import { toastError } from '~/client/util/toastr'; import type { BookmarkFolderItems } from '~/interfaces/bookmark-info'; import { useDeleteBookmarkFolderModalStatus, useDeleteBookmarkFolderModalActions } from '~/states/ui/modal/delete-bookmark-folder'; /** * DeleteBookmarkFolderModalSubstance - Presentation component (all logic here) */ type DeleteBookmarkFolderModalSubstanceProps = { bookmarkFolder: BookmarkFolderItems; onDeleted?: (folderId: string) => void; closeModal: () => void; }; const DeleteBookmarkFolderModalSubstance = ({ bookmarkFolder, onDeleted, closeModal, }: DeleteBookmarkFolderModalSubstanceProps): React.JSX.Element => { const { t } = useTranslation(); const deleteBookmark = useCallback(async() => { try { await deleteBookmarkFolder(bookmarkFolder._id); if (onDeleted != null) { onDeleted(bookmarkFolder._id); } closeModal(); } catch (err) { toastError(err); } }, [bookmarkFolder, onDeleted, closeModal]); const onClickDeleteButton = useCallback(async() => { await deleteBookmark(); }, [deleteBookmark]); return (
delete {t('bookmark_folder.delete_modal.modal_header_label')}

{bookmarkFolder?.name}
{t('bookmark_folder.delete_modal.modal_body_alert')}
); }; /** * DeleteBookmarkFolderModal - Container component (lightweight, always rendered) */ const DeleteBookmarkFolderModal: FC = () => { const { isOpened, bookmarkFolder, opts } = useDeleteBookmarkFolderModalStatus(); const { close: closeModal } = useDeleteBookmarkFolderModalActions(); return ( {isOpened && bookmarkFolder != null && ( )} ); }; export { DeleteBookmarkFolderModal };