فهرست منبع

Merge pull request #4415 from weseek/imprv/#78064-create-activity-when-page-updated

create activity when page updated
cao 4 سال پیش
والد
کامیت
bb36c740bd

+ 2 - 2
packages/app/src/server/crowi/index.js

@@ -64,8 +64,8 @@ function Crowi() {
   this.interceptorManager = new InterceptorManager();
   this.slackIntegrationService = null;
   this.inAppNotificationService = null;
-  this.ActivityService = null;
-  this.CommentService = null;
+  this.activityService = null;
+  this.commentService = null;
   this.xss = new Xss();
 
   this.tokens = null;

+ 18 - 0
packages/app/src/server/service/activity.ts

@@ -63,6 +63,24 @@ class ActivityService {
     return;
   };
 
+  /**
+   * @param {Page} page
+   * @param {User} user
+   * @return {Promise}
+   */
+  createByPageUpdate = async function(page, user) {
+    const parameters = {
+      user: user._id,
+      targetModel: ActivityDefine.MODEL_PAGE,
+      target: page,
+      action: ActivityDefine.ACTION_UPDATE,
+    };
+    const Activity = getModelSafely('Activity') || require('../models/activity')(this.crowi);
+    await Activity.createByParameters(parameters);
+    return;
+  };
+
+
 }
 
 module.exports = ActivityService;

+ 26 - 3
packages/app/src/server/service/page.js

@@ -5,8 +5,8 @@ const mongoose = require('mongoose');
 const escapeStringRegexp = require('escape-string-regexp');
 const streamToPromise = require('stream-to-promise');
 
-const logger = loggerFactory('growi:models:page');
-const debug = require('debug')('growi:models:page');
+const logger = loggerFactory('growi:service:page');
+const debug = require('debug')('growi:service:page');
 const { Writable } = require('stream');
 const { createBatchStream } = require('~/server/util/batch-stream');
 
@@ -22,11 +22,34 @@ class PageService {
     this.pageEvent = crowi.event('page');
 
     // init
+    this.initPageEvent();
+  }
+
+  initPageEvent() {
+    // create
     this.pageEvent.on('create', this.pageEvent.onCreate);
-    this.pageEvent.on('update', this.pageEvent.onUpdate);
+
+    // update
+    this.pageEvent.on('update', async(page, user) => {
+      const { activityService } = this.crowi;
+
+      this.pageEvent.onUpdate();
+
+      try {
+        await activityService.createByPageUpdate(page, user);
+      }
+      catch (err) {
+        logger.error(err);
+
+      }
+    });
+
+
+    // createMany
     this.pageEvent.on('createMany', this.pageEvent.onCreateMany);
   }
 
+
   /**
    * go back by using redirectTo and return the paths
    *  ex: when

+ 6 - 6
packages/app/src/server/util/activityDefine.ts

@@ -1,11 +1,11 @@
 const MODEL_PAGE = 'Page';
 const MODEL_COMMENT = 'Comment';
 
+const ACTION_UPDATE = 'UPDATE';
+const ACTION_COMMENT = 'COMMENT';
 const ACTION_CREATE = 'CREATE'; // Not support yet
-const ACTION_MODIFY = 'MODIFY'; // Not support yet
 const ACTION_DELETE = 'DELETE'; // Not support yet
-const ACTION_COMMENT = 'COMMENT';
-const ACTION_LIKE = 'LIKE';
+const ACTION_LIKE = 'LIKE'; // Not support yet
 
 const getSupportTargetModelNames = () => {
   return [MODEL_PAGE];
@@ -18,10 +18,10 @@ const getSupportEventModelNames = () => {
 const getSupportActionNames = () => {
   return [
     // ACTION_CREATE,
-    // ACTION_MODIFY,
+    ACTION_UPDATE,
     // ACTION_DELETE,
     ACTION_COMMENT,
-    ACTION_LIKE,
+    // ACTION_LIKE,
   ];
 };
 
@@ -30,7 +30,7 @@ const activityDefine = {
   MODEL_COMMENT,
 
   ACTION_CREATE, // Not support yet
-  ACTION_MODIFY, // Not support yet
+  ACTION_UPDATE,
   ACTION_DELETE, // Not support yet
   ACTION_COMMENT,
   ACTION_LIKE,