kaori 4 лет назад
Родитель
Сommit
1d92b14867

+ 0 - 1
packages/app/src/server/crowi/index.js

@@ -86,7 +86,6 @@ function Crowi() {
     tag: new (require('../events/tag'))(this),
     admin: new (require('../events/admin'))(this),
     comment: new (require('../events/comment'))(this),
-    activity: new (require('../events/activity'))(),
   };
 }
 

+ 3 - 2
packages/app/src/server/events/activity.ts

@@ -4,7 +4,7 @@ import loggerFactory from '../../utils/logger';
 const logger = loggerFactory('growi:events:activity');
 
 
-export default class ActivityEvent extends EventEmitter {
+class ActivityEvent extends EventEmitter {
 
   onRemove(action: string, activity: any): void {
     logger.info('onRemove activity event fired');
@@ -16,4 +16,5 @@ export default class ActivityEvent extends EventEmitter {
 
 }
 
-module.exports = ActivityEvent;
+const instance = new ActivityEvent();
+export default instance;

+ 20 - 0
packages/app/src/server/models/activity.ts

@@ -2,12 +2,18 @@ import {
   Types, Document, Model, Schema,
 } from 'mongoose';
 
+import loggerFactory from '../../utils/logger';
+
 import { getOrCreateModel, getModelSafely } from '../util/mongoose-utils';
 
 import ActivityDefine from '../util/activityDefine';
 
 import Subscription from './subscription';
 
+import activityEvent from '../events/activity';
+
+const logger = loggerFactory('growi:model:activity');
+
 
 export interface ActivityDocument extends Document {
   _id: Types.ObjectId
@@ -91,4 +97,18 @@ activitySchema.methods.getNotificationTargetUsers = async function() {
   return activeNotificationUsers;
 };
 
+
+activitySchema.post('save', async(savedActivity: ActivityDocument) => {
+  let targetUsers: Types.ObjectId[] = [];
+  try {
+    targetUsers = await savedActivity.getNotificationTargetUsers();
+  }
+  catch (err) {
+    logger.error(err);
+  }
+
+  activityEvent.emit('create', targetUsers, savedActivity);
+});
+
+
 export default getOrCreateModel<ActivityDocument, ActivityModel>('Activity', activitySchema);

+ 0 - 2
packages/app/src/server/service/comment.ts

@@ -42,8 +42,6 @@ class CommentService {
         let targetUsers: Types.ObjectId[] = [];
         targetUsers = await savedActivity.getNotificationTargetUsers();
 
-        this.activityEvent.emit('create', targetUsers, savedActivity);
-
         await this.inAppNotificationService.upsertByActivity(targetUsers, savedActivity);
       }
       catch (err) {

+ 0 - 2
packages/app/src/server/service/page.js

@@ -43,8 +43,6 @@ class PageService {
         let targetUsers = [];
         targetUsers = await savedActivity.getNotificationTargetUsers();
 
-        this.activityEvent.emit('create', targetUsers, savedActivity);
-
         await inAppNotificationService.upsertByActivity(targetUsers, savedActivity);
       }
       catch (err) {