import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import loggerFactory from '~/utils/logger'; import { withUnstatedContainers } from './UnstatedUtils'; import { toastError } from '~/client/util/apiNotification'; import { withLoadingSppiner } from './SuspenseUtils'; import PageRevisionTable from './PageHistory/PageRevisionTable'; import PageHistroyContainer from '~/client/services/PageHistoryContainer'; import PaginationWrapper from './PaginationWrapper'; import RevisionComparer from './RevisionComparer/RevisionComparer'; import RevisionComparerContainer from '~/client/services/RevisionComparerContainer'; const logger = loggerFactory('growi:PageHistory'); function PageHistory(props) { const { pageHistoryContainer, revisionComparerContainer } = props; const { getPreviousRevision } = pageHistoryContainer; const { activePage, totalPages, pagingLimit, revisions, diffOpened, } = pageHistoryContainer.state; const handlePage = useCallback(async(selectedPage) => { try { await props.pageHistoryContainer.retrieveRevisions(selectedPage); } catch (err) { toastError(err); props.pageHistoryContainer.setState({ errorMessage: err.message }); logger.error(err); } }, [props.pageHistoryContainer]); if (pageHistoryContainer.state.errorMessage != null) { return (
{pageHistoryContainer.state.errorMessage}
); } if (pageHistoryContainer.state.revisions === pageHistoryContainer.dummyRevisions) { throw new Promise(async() => { try { await props.pageHistoryContainer.retrieveRevisions(1); await props.revisionComparerContainer.initRevisions(); } catch (err) { toastError(err); pageHistoryContainer.setState({ errorMessage: err.message }); logger.error(err); } }); } function pager() { return ( ); } return (
{pager()}
); } const RenderPageHistoryWrapper = withUnstatedContainers(withLoadingSppiner(PageHistory), [PageHistroyContainer, RevisionComparerContainer]); PageHistory.propTypes = { pageHistoryContainer: PropTypes.instanceOf(PageHistroyContainer).isRequired, revisionComparerContainer: PropTypes.instanceOf(RevisionComparerContainer).isRequired, }; export default RenderPageHistoryWrapper;