import React, { useState, FC } from 'react'; import toastr from 'toastr'; import { Modal, ModalHeader, ModalBody, ModalFooter, } from 'reactstrap'; import { useTranslation } from 'react-i18next'; // import { apiPost } from '~/client/util/apiv1-client'; import ApiErrorMessageList from './PageManagement/ApiErrorMessageList'; export type IPageForPageDeleteModal = { pageId: string, revisionId: string, path: string } const deleteIconAndKey = { completely: { color: 'danger', icon: 'fire', translationKey: 'completely', }, temporary: { color: 'primary', icon: 'trash', translationKey: 'page', }, }; type Props = { isOpen: boolean, pages: IPageForPageDeleteModal[], isDeleteCompletelyModal: boolean, isAbleToDeleteCompletely: boolean, onClose?: () => void, } const PageDeleteModal: FC = (props: Props) => { const { t } = useTranslation(''); const { isOpen, onClose, isDeleteCompletelyModal, pages, isAbleToDeleteCompletely, } = props; const [isDeleteRecursively, setIsDeleteRecursively] = useState(true); const [isDeleteCompletely, setIsDeleteCompletely] = useState(isDeleteCompletelyModal && isAbleToDeleteCompletely); const deleteMode = isDeleteCompletely ? 'completely' : 'temporary'; const [errs, setErrs] = useState(null); function changeIsDeleteRecursivelyHandler() { setIsDeleteRecursively(!isDeleteRecursively); } function changeIsDeleteCompletelyHandler() { if (!isAbleToDeleteCompletely) { return; } setIsDeleteCompletely(!isDeleteCompletely); } async function deletePage() { toastr.warning(t('search_result.currently_not_implemented')); // Todo implement page delete function at https://redmine.weseek.co.jp/issues/82222 // setErrs(null); // try { // // control flag // // If is it not true, Request value must be `null`. // const recursively = isDeleteRecursively ? true : null; // const completely = isDeleteCompletely ? true : null; // const response = await apiPost('/pages.remove', { // page_id: pageId, // revision_id: revisionId, // recursively, // completely, // }); // const trashPagePath = response.page.path; // window.location.href = encodeURI(trashPagePath); // } // catch (err) { // setErrs(err); // } } async function deleteButtonHandler() { deletePage(); } function renderDeleteRecursivelyForm() { return (
); } // DeleteCompletely is currently disabled // TODO1 : Retrive isAbleToDeleteCompleltly state everywhere in the system via swr. // Story: https://redmine.weseek.co.jp/issues/82222 // TODO2 : use toaster // TASK : https://redmine.weseek.co.jp/issues/82299 function renderDeleteCompletelyForm() { return (
{/* ↓↓ undo this comment out at https://redmine.weseek.co.jp/issues/82222 ↓↓ */} {/*
); } return ( { t(`modal_delete.delete_${deleteIconAndKey[deleteMode].translationKey}`) }

{/* Todo: change the way to show path on modal when too many pages are selected */} {/* https://redmine.weseek.co.jp/issues/82787 */} {pages.map((page) => { return
{ page.path }
; })}
{renderDeleteRecursivelyForm()} {!isDeleteCompletelyModal && renderDeleteCompletelyForm()}
); }; export default PageDeleteModal;