Преглед изворни кода

GC-705: syncRevisionToHackmd when update

Yuki Takei пре 7 година
родитељ
комит
cae2cd5c6e
3 измењених фајлова са 19 додато и 8 уклоњено
  1. 7 3
      lib/models/page.js
  2. 10 5
      lib/routes/page.js
  3. 2 0
      resource/js/app.js

+ 7 - 3
lib/models/page.js

@@ -958,8 +958,6 @@ module.exports = function(crowi) {
     pageData.lastUpdateUser = user;
     pageData.updatedAt = Date.now();
 
-    pageData = this.syncRevisionToHackmd(pageData, false);
-
     return pageData.save();
   };
 
@@ -1022,16 +1020,22 @@ module.exports = function(crowi) {
       , Revision = crowi.model('Revision')
       , grant = options.grant || null
       , grantUserGroupId = options.grantUserGroupId || null
+      , isSyncRevisionToHackmd = options.isSyncRevisionToHackmd
       ;
     // update existing page
     const newRevision = await Revision.prepareRevision(pageData, body, user);
 
     const revision = await Page.pushRevision(pageData, newRevision, user);
-    const savedPage = await Page.findPageByPath(revision.path).populate('revision').populate('creator');
+    let savedPage = await Page.findPageByPath(revision.path).populate('revision').populate('creator');
     if (grant != null) {
       const grantData = await Page.updateGrant(savedPage, grant, user, grantUserGroupId);
       debug('Page grant update:', grantData);
     }
+
+    if (isSyncRevisionToHackmd) {
+      savedPage = await Page.syncRevisionToHackmd(savedPage);
+    }
+
     pageEvent.emit('update', savedPage, user);
     return savedPage;
   };

+ 10 - 5
lib/routes/page.js

@@ -832,8 +832,9 @@ module.exports = function(crowi, app) {
     const revisionId = req.body.revision_id || null;
     const grant = req.body.grant || null;
     const grantUserGroupId = req.body.grantUserGroupId || null;
-    const isSlackEnabled = !!req.body.isSlackEnabled;   // cast to boolean
+    const isSlackEnabled = !!req.body.isSlackEnabled;           // cast to boolean
     const slackChannels = req.body.slackChannels || null;
+    const isSyncRevisionToHackmd = !!req.body.slackChannels;    // cast to boolean
 
     if (pageId === null || pageBody === null) {
       return res.json(ApiResponse.error('page_id and body are required.'));
@@ -846,18 +847,22 @@ module.exports = function(crowi, app) {
           throw new Error('Revision error.');
         }
 
-        const grantOption = {};
+        const options = {};
         if (grant != null) {
-          grantOption.grant = grant;
+          options.grant = grant;
         }
         if (grantUserGroupId != null) {
-          grantOption.grantUserGroupId = grantUserGroupId;
+          options.grantUserGroupId = grantUserGroupId;
+        }
+
+        if (isSyncRevisionToHackmd) {
+          options.isSyncRevisionToHackmd = true;
         }
 
         // store previous revision
         previousRevision = pageData.revision;
 
-        return Page.updatePage(pageData, pageBody, req.user, grantOption);
+        return Page.updatePage(pageData, pageBody, req.user, options);
       })
       .catch(function(err) {
         debug('error on _api/pages.update', err);

+ 2 - 0
resource/js/app.js

@@ -226,6 +226,7 @@ const saveWithShortcut = function(markdown) {
   }
   else {
     promise = crowi.updatePage(pageId, pageRevisionId, markdown, options);
+    options.isSyncRevisionToHackmd = true;
   }
 
   promise
@@ -254,6 +255,7 @@ const saveWithSubmitButton = function() {
   }
   else {
     promise = componentInstances.pageEditorByHackmd.getMarkdown();
+    options.isSyncRevisionToHackmd = true;
   }
   // create or update
   if (pageId == null) {