import React, { useState, FC, } from 'react'; import { useTranslation } from 'next-i18next'; import { Modal, ModalHeader, ModalBody, ModalFooter, } from 'reactstrap'; import { apiv3Delete } from '~/client/util/apiv3-client'; import { useEmptyTrashModal } from '~/stores/modal'; import ApiErrorMessageList from './PageManagement/ApiErrorMessageList'; const EmptyTrashModal: FC = () => { const { t } = useTranslation(); const { data: emptyTrashModalData, close: closeEmptyTrashModal } = useEmptyTrashModal(); const isOpened = emptyTrashModalData?.isOpened ?? false; const canDeleteAllpages = emptyTrashModalData?.opts?.canDeleteAllPages ?? false; const [errs, setErrs] = useState(null); async function emptyTrash() { if (emptyTrashModalData == null || emptyTrashModalData.pages == null) { return; } try { await apiv3Delete('/pages/empty-trash'); const onEmptiedTrash = emptyTrashModalData.opts?.onEmptiedTrash; if (onEmptiedTrash != null) { onEmptiedTrash(); } closeEmptyTrashModal(); } catch (err) { setErrs([err]); } } async function emptyTrashButtonHandler() { await emptyTrash(); } const renderPagePaths = () => { const pages = emptyTrashModalData?.pages; if (pages != null) { return pages.map(page => (

{ page.data.path }

)); } return <>; }; return ( delete_forever {t('modal_empty.empty_the_trash')}

{/* Todo: change the way to show path on modal when too many pages are selected */} {renderPagePaths()}
{!canDeleteAllpages && t('modal_empty.not_deletable_notice')}
{t('modal_empty.notice')}
); }; export default EmptyTrashModal;