Ver Fonte

Merge pull request #4354 from weseek/imprv/81-36-fix-tag-updating-feature

fix tag updating feature
Mao há 4 anos atrás
pai
commit
aa4837f483

+ 9 - 0
packages/app/src/client/services/PageContainer.js

@@ -343,6 +343,15 @@ export default class PageContainer extends Container {
     }
   }
 
+  // TODO : temporaly use only
+  updateStateAfterTagAdded(page) {
+    const newState = {
+      updatedAt: page.updatedAt,
+      revisionAuthor: page.revision.author,
+    };
+    this.setState(newState);
+  }
+
   /**
    * save success handler
    * @param {object} page Page instance

+ 7 - 5
packages/app/src/components/Page/TagLabels.jsx

@@ -49,16 +49,17 @@ class TagLabels extends React.Component {
       appContainer, editorContainer, pageContainer, editorMode,
     } = this.props;
 
-    const { pageId } = pageContainer.state;
-
+    const { pageId, revisionId } = pageContainer.state;
     // It will not be reflected in the DB until the page is refreshed
     if (editorMode === 'edit') {
       return editorContainer.setState({ tags: newTags });
     }
-
+    let page;
     try {
-      const { tags } = await appContainer.apiPost('/tags.update', { pageId, tags: newTags });
-
+      const { tags, savedPage } = await appContainer.apiPost('/tags.update', {
+        pageId, tags: newTags, revisionId,
+      });
+      page = savedPage;
       // update pageContainer.state
       pageContainer.setState({ tags });
       // update editorContainer.state
@@ -69,6 +70,7 @@ class TagLabels extends React.Component {
     catch (err) {
       toastError(err, 'fail to update tags');
     }
+    pageContainer.updateStateAfterTagAdded(page);
   }
 
 

+ 5 - 0
packages/app/src/server/routes/tag.js

@@ -137,14 +137,19 @@ module.exports = function(crowi, app) {
   api.update = async function(req, res) {
     const Page = crowi.model('Page');
     const PageTagRelation = crowi.model('PageTagRelation');
+    const Revision = crowi.model('Revision');
+    const User = crowi.model('User');
     const tagEvent = crowi.event('tag');
     const pageId = req.body.pageId;
     const tags = req.body.tags;
+    const revisionId = req.body.revisionId;
 
     const result = {};
     try {
       // TODO GC-1921 consider permission
       const page = await Page.findById(pageId);
+      const previousRevision = await Revision.findById(revisionId);
+      result.savedPage = await Page.updatePage(page, previousRevision.body, previousRevision.body, req.user);
       await PageTagRelation.updatePageTags(pageId, tags);
       result.tags = await PageTagRelation.listTagNamesByPage(pageId);