import React, { useState, useCallback } from 'react'; import { useTranslation } from 'next-i18next'; import { Modal, ModalHeader, ModalBody, ModalFooter, } from 'reactstrap'; import { apiPost } from '~/client/util/apiv1-client'; import { PathAlreadyExistsError } from '~/server/models/errors'; import { usePutBackPageModal } from '~/stores/modal'; import { usePageInfoTermManager } from '~/stores/page'; import ApiErrorMessageList from './PageManagement/ApiErrorMessageList'; const PutBackPageModal = () => { const { t } = useTranslation(); const { data: pageDataToRevert, close: closePutBackPageModal } = usePutBackPageModal(); const { advance: advancePi } = usePageInfoTermManager(); const { isOpened, page } = pageDataToRevert; const { pageId, path } = page; const onPutBacked = pageDataToRevert.opts?.onPutBacked; const [errs, setErrs] = useState(null); const [targetPath, setTargetPath] = useState(null); const [isPutbackRecursively, setIsPutbackRecursively] = useState(true); function changeIsPutbackRecursivelyHandler() { setIsPutbackRecursively(!isPutbackRecursively); } async function putbackPageButtonHandler() { setErrs(null); try { // control flag // If is it not true, Request value must be `null`. const recursively = isPutbackRecursively ? true : null; const response = await apiPost('/pages.revertRemove', { page_id: pageId, recursively, }); advancePi(); if (onPutBacked != null) { onPutBacked(response.page.path); } closePutBackPageModal(); } catch (err) { setTargetPath(err.data); setErrs([err]); } } const HeaderContent = () => { if (!isOpened) { return <>; } return ( <> { t('modal_putback.label.Put Back Page') } ); }; const BodyContent = () => { if (!isOpened) { return <>; } return ( <>

{path}

{ path }{ t('modal_putback.help.recursively') }

); }; const FooterContent = () => { if (!isOpened) { return <>; } return ( <> ); }; const closeModalHandler = useCallback(() => { closePutBackPageModal(); setErrs(null); }, [closePutBackPageModal]); return ( ); }; export default PutBackPageModal;