PageHistory.jsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import loggerFactory from '@alias/logger';
  4. import { withUnstatedContainers } from './UnstatedUtils';
  5. import { toastError } from '../util/apiNotification';
  6. import { withLoadingSppiner } from './SuspenseUtils';
  7. import PageRevisionList from './PageHistory/PageRevisionList';
  8. import PageHistroyContainer from '../services/PageHistoryContainer';
  9. const logger = loggerFactory('growi:PageHistory');
  10. function PageHistory(props) {
  11. const { pageHistoryContainer } = props;
  12. if (pageHistoryContainer.state.revisions === pageHistoryContainer.dummyRevisions) {
  13. throw new Promise(async() => {
  14. try {
  15. await props.pageHistoryContainer.retrieveRevisions();
  16. }
  17. catch (err) {
  18. toastError(err);
  19. pageHistoryContainer.setState({ retrieveError: err.message });
  20. logger.error(err);
  21. }
  22. });
  23. }
  24. return (
  25. <div className="mt-4">
  26. {pageHistoryContainer.state.errorMessage && (
  27. <div className="my-5">
  28. <div className="text-danger">{pageHistoryContainer.state.errorMessage}</div>
  29. </div>
  30. ) }
  31. <PageRevisionList
  32. revisions={pageHistoryContainer.state.revisions}
  33. diffOpened={pageHistoryContainer.state.diffOpened}
  34. getPreviousRevision={pageHistoryContainer.getPreviousRevision}
  35. onDiffOpenClicked={pageHistoryContainer.onDiffOpenClicked}
  36. />
  37. </div>
  38. );
  39. }
  40. const RenderPageHistoryWrapper = withUnstatedContainers(withLoadingSppiner(PageHistory), [PageHistroyContainer]);
  41. PageHistory.propTypes = {
  42. pageHistoryContainer: PropTypes.instanceOf(PageHistroyContainer).isRequired,
  43. };
  44. export default RenderPageHistoryWrapper;