ソースを参照

WIP: GC-529 invoke saveOnHackmd API

* refactor updateHasDraftOnHackmd method
Yuki Takei 7 年 前
コミット
f6296b0591
2 ファイル変更9 行追加8 行削除
  1. 8 6
      lib/models/page.js
  2. 1 2
      lib/routes/hackmd.js

+ 8 - 6
lib/models/page.js

@@ -1330,22 +1330,24 @@ module.exports = function(crowi) {
   };
 
   /**
-   * update hasDraftOnHackmd if revision and 'bodyOnHackmd' has difference
+   * update hasDraftOnHackmd
+   * !! This will be invoked many time from many people !!
+   *
    * @param {Page} pageData
-   * @param {string} bodyOnHackmd
+   * @param {Boolean} newValue
    */
+  pageSchema.statics.updateHasDraftOnHackmd = async function(pageData, newValue) {
     const revisionIdStr = pageData.revision.toString();
     const revisionHackmdSyncedIdStr = pageData.revisionHackmdSynced.toString();
     if (revisionIdStr !== revisionHackmdSyncedIdStr) {
       return;
     }
-    else if (pageData.hasDraftOnHackmd) {
-      // do nothing when hasDraftOnHackmd is already 'true'
+    else if (pageData.hasDraftOnHackmd === newValue) {
+      // do nothing when hasDraftOnHackmd equals to newValue
       return;
     }
 
-    pageData = await pageData.populate();
-    pageData.hasDraftOnHackmd = pageData.revision.body !== bodyOnHackmd;
+    pageData.hasDraftOnHackmd = newValue;
     return pageData.save();
   };
 

+ 1 - 2
lib/routes/hackmd.js

@@ -115,10 +115,9 @@ module.exports = function(crowi, app) {
    */
   const saveOnHackmd = async function(req, res) {
     const page = req.page;
-    const bodyOnHackmd = req.body.bodyOnHackmd;
 
     try {
-      await Page.updateIfHackmdHasDraft(page, bodyOnHackmd);
+      await Page.updateHasDraftOnHackmd(page, true);
       return res.json(ApiResponse.success());
     }
     catch (err) {