| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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 (
- <div className="my-5">
- <div className="text-danger">{pageHistoryContainer.state.errorMessage}</div>
- </div>
- );
- }
- 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 (
- <PaginationWrapper
- activePage={activePage}
- changePage={handlePage}
- totalItemsCount={totalPages}
- pagingLimit={pagingLimit}
- align="center"
- />
- );
- }
- return (
- <div className="revision-history" data-testid="page-history">
- <PageRevisionTable
- pageHistoryContainer={pageHistoryContainer}
- revisionComparerContainer={revisionComparerContainer}
- revisions={revisions}
- diffOpened={diffOpened}
- getPreviousRevision={getPreviousRevision}
- />
- <div className="my-3">
- {pager()}
- </div>
- <RevisionComparer />
- </div>
- );
- }
- const RenderPageHistoryWrapper = withUnstatedContainers(withLoadingSppiner(PageHistory), [PageHistroyContainer, RevisionComparerContainer]);
- PageHistory.propTypes = {
- pageHistoryContainer: PropTypes.instanceOf(PageHistroyContainer).isRequired,
- revisionComparerContainer: PropTypes.instanceOf(RevisionComparerContainer).isRequired,
- };
- export default RenderPageHistoryWrapper;
|