ソースを参照

state update after tag updat

Mao 4 年 前
コミット
4bab242e44

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

@@ -347,6 +347,7 @@ export default class PageContainer extends Container {
   updateStateAfterTagAdded(page) {
   updateStateAfterTagAdded(page) {
     const newState = {
     const newState = {
       updatedAt: page.updatedAt,
       updatedAt: page.updatedAt,
+      revisionAuthor: page.revision.author,
     };
     };
     this.setState(newState);
     this.setState(newState);
   }
   }

+ 4 - 4
packages/app/src/components/Page/TagLabels.jsx

@@ -55,12 +55,12 @@ class TagLabels extends React.Component {
     if (editorMode === 'edit') {
     if (editorMode === 'edit') {
       return editorContainer.setState({ tags: newTags });
       return editorContainer.setState({ tags: newTags });
     }
     }
-
+    let page;
     try {
     try {
-      const { tags } = await appContainer.apiPost('/tags.update', {
+      const { tags, savedPage } = await appContainer.apiPost('/tags.update', {
         pageId, tags: newTags, revisionId, options,
         pageId, tags: newTags, revisionId, options,
       });
       });
-
+      page = savedPage;
       // update pageContainer.state
       // update pageContainer.state
       pageContainer.setState({ tags });
       pageContainer.setState({ tags });
       // update editorContainer.state
       // update editorContainer.state
@@ -71,7 +71,7 @@ class TagLabels extends React.Component {
     catch (err) {
     catch (err) {
       toastError(err, 'fail to update tags');
       toastError(err, 'fail to update tags');
     }
     }
-    pageContainer.updateStateAfterTagAdded();
+    pageContainer.updateStateAfterTagAdded(page);
   }
   }
 
 
 
 

+ 1 - 4
packages/app/src/server/routes/tag.js

@@ -135,9 +135,6 @@ module.exports = function(crowi, app) {
    * @apiParam {array} tags
    * @apiParam {array} tags
    */
    */
   api.update = async function(req, res) {
   api.update = async function(req, res) {
-    // GW36 tag update feature problem (when adding/removing tags, page's updatedAt does not get updated)
-    // Idea : call Page.updatePage to update 'updatedAt' when tag is added/removed
-    // ref: api.update in pages.js router
     const Page = crowi.model('Page');
     const Page = crowi.model('Page');
     const PageTagRelation = crowi.model('PageTagRelation');
     const PageTagRelation = crowi.model('PageTagRelation');
     const Revision = crowi.model('Revision');
     const Revision = crowi.model('Revision');
@@ -153,7 +150,7 @@ module.exports = function(crowi, app) {
       // TODO GC-1921 consider permission
       // TODO GC-1921 consider permission
       const page = await Page.findById(pageId);
       const page = await Page.findById(pageId);
       const previousRevision = await Revision.findById(revisionId);
       const previousRevision = await Revision.findById(revisionId);
-      await Page.updatePage(page, previousRevision.body, previousRevision.body, req.user, options);
+      result.savedPage = await Page.updatePage(page, previousRevision.body, previousRevision.body, req.user, options);
       await PageTagRelation.updatePageTags(pageId, tags);
       await PageTagRelation.updatePageTags(pageId, tags);
       result.tags = await PageTagRelation.listTagNamesByPage(pageId);
       result.tags = await PageTagRelation.listTagNamesByPage(pageId);