import React, { useState } from 'react';
import { UserPicture } from '@growi/ui';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import PageContainer from '~/client/services/PageContainer';
import { useCurrentUpdatedAt, useShareLinkId } from '~/stores/context';
import { usePageDeleteModal, usePutBackPageModal } from '~/stores/modal';
import { useSWRxPageInfo } from '~/stores/page';
import EmptyTrashModal from '../EmptyTrashModal';
import { withUnstatedContainers } from '../UnstatedUtils';
const onDeletedHandler = (pathOrPathsToDelete, isRecursively, isCompletely) => {
if (typeof pathOrPathsToDelete !== 'string') {
return;
}
window.location.href = '/';
};
const TrashPageAlert = (props) => {
const { t } = useTranslation();
const { pageContainer } = props;
const {
pageId, revisionId, path, isDeleted, lastUpdateUsername, deletedUserName, deletedAt,
} = pageContainer.state;
const { data: shareLinkId } = useShareLinkId();
/*
* TODO: Do not use useSWRxPageInfo on this component
* Ideal: use useSWRxPageInfo on TrashPage after applying Next.js
* Reference: https://github.com/weseek/growi/pull/5359#discussion_r808381329
*/
const { data: pageInfo } = useSWRxPageInfo(pageId ?? null, shareLinkId);
const { data: updatedAt } = useCurrentUpdatedAt();
const [isEmptyTrashModalShown, setIsEmptyTrashModalShown] = useState(false);
const { open: openDeleteModal } = usePageDeleteModal();
const { open: openPutBackPageModal } = usePutBackPageModal();
function openEmptyTrashModalHandler() {
setIsEmptyTrashModalShown(true);
}
function closeEmptyTrashModalHandler() {
setIsEmptyTrashModalShown(false);
}
function openPutbackPageModalHandler() {
const putBackedHandler = (path) => {
window.location.reload();
};
openPutBackPageModal({ pageId, path }, { onPutBacked: putBackedHandler });
}
function openPageDeleteModalHandler() {
const pageToDelete = {
data: {
_id: pageId,
revision: revisionId,
path,
},
meta: pageInfo,
};
openDeleteModal([pageToDelete], { onDeleted: onDeletedHandler });
}
function renderEmptyButton() {
return (
);
}
function renderTrashPageManagementButtons() {
return (
<>
>
);
}
function renderModals() {
return (
<>