itizawa 5 лет назад
Родитель
Сommit
5dc2351396

+ 3 - 1
src/client/js/app.jsx

@@ -141,7 +141,9 @@ $('a[data-toggle="tab"][href="#revision-history"]').on('show.bs.tab', () => {
   ReactDOM.render(
     <I18nextProvider i18n={i18n}>
       <ErrorBoundary>
-        <PageHistory shareLinkId={pageContainer.state.shareLinkId} pageId={pageContainer.state.pageId} crowi={appContainer} />
+        <Provider inject={injectableContainers}>
+          <PageHistory shareLinkId={pageContainer.state.shareLinkId} pageId={pageContainer.state.pageId} />
+        </Provider>
       </ErrorBoundary>
     </I18nextProvider>, document.getElementById('revision-history'),
   );

+ 12 - 5
src/client/js/components/PageHistory.jsx

@@ -3,8 +3,10 @@ import PropTypes from 'prop-types';
 import loggerFactory from '@alias/logger';
 
 import { withTranslation } from 'react-i18next';
+import { withUnstatedContainers } from './UnstatedUtils';
 
 import PageRevisionList from './PageHistory/PageRevisionList';
+import AppContainer from '../services/AppContainer';
 
 const logger = loggerFactory('growi:PageHistory');
 class PageHistory extends React.Component {
@@ -25,7 +27,7 @@ class PageHistory extends React.Component {
   }
 
   async componentWillMount() {
-    const pageId = this.props.pageId;
+    const { appContainer, pageId } = this.props;
     const shareLinkId = this.props.shareLinkId || null;
 
     if (!pageId) {
@@ -35,7 +37,7 @@ class PageHistory extends React.Component {
     let res;
     try {
       this.setState({ isLoading: true });
-      res = await this.props.crowi.apiGet('/revisions.ids', { page_id: pageId, share_link_id: shareLinkId });
+      res = await appContainer.apiv3Get(`/revisions/${pageId}`, { share_link_id: shareLinkId });
     }
     catch (err) {
       logger.error(err);
@@ -111,13 +113,14 @@ class PageHistory extends React.Component {
   }
 
   fetchPageRevisionBody(revision) {
+    const { appContainer } = this.props;
     const shareLinkId = this.props.shareLinkId || null;
 
     if (revision.body) {
       return;
     }
 
-    this.props.crowi.apiGet('/revisions.get',
+    appContainer.apiGet('/revisions.get',
       { page_id: this.props.pageId, revision_id: revision._id, share_link_id: shareLinkId })
       .then((res) => {
         if (res.ok) {
@@ -167,12 +170,16 @@ class PageHistory extends React.Component {
 
 }
 
+const PageHistoryWrapper = withUnstatedContainers(PageHistory, [AppContainer]);
+
+
 PageHistory.propTypes = {
+  appContainer: PropTypes.instanceOf(AppContainer).isRequired,
+
   t: PropTypes.func.isRequired, // i18next
 
   shareLinkId: PropTypes.string,
   pageId: PropTypes.string,
-  crowi: PropTypes.object.isRequired,
 };
 
-export default withTranslation()(PageHistory);
+export default withTranslation()(PageHistoryWrapper);

+ 2 - 0
src/server/routes/apiv3/index.js

@@ -39,6 +39,8 @@ module.exports = (crowi) => {
 
   router.use('/page', require('./page')(crowi));
   router.use('/pages', require('./pages')(crowi));
+  router.use('/revisions', require('./revisions')(crowi));
+
   router.use('/share-links', require('./share-links')(crowi));
 
   router.use('/bookmarks', require('./bookmarks')(crowi));

+ 43 - 0
src/server/routes/apiv3/revisions.js

@@ -0,0 +1,43 @@
+const loggerFactory = require('@alias/logger');
+
+const logger = loggerFactory('growi:routes:apiv3:pages'); // eslint-disable-line no-unused-vars
+
+const express = require('express');
+
+
+const router = express.Router();
+
+/**
+ * @swagger
+ *  tags:
+ *    name: Revisions
+ */
+module.exports = (crowi) => {
+  const loginRequired = require('../../middlewares/login-required')(crowi, true);
+
+  const Page = crowi.model('Page');
+
+  /**
+   * @swagger
+   *
+   *    /revisions/{id}:
+   *      get:
+   *        tags: [Revisions]
+   *        description: Get revisions by page id
+   *        responses:
+   *          200:
+   *            description: Return revisions belong to page
+   *
+   */
+  router.get('/{id}', loginRequired, async(req, res) => {
+    console.log('hoge');
+    console.log(req.query);
+
+    const { id } = req.query;
+    console.log(id);
+
+    return res.apiv3({ id });
+  });
+
+  return router;
+};