Просмотр исходного кода

using activityEvent in activity service not the model

kaori 4 лет назад
Родитель
Сommit
32e11ceaeb
2 измененных файлов с 22 добавлено и 18 удалено
  1. 1 16
      packages/app/src/server/models/activity.ts
  2. 21 2
      packages/app/src/server/service/activity.ts

+ 1 - 16
packages/app/src/server/models/activity.ts

@@ -4,13 +4,11 @@ import {
 import Crowi from '../crowi';
 import Crowi from '../crowi';
 
 
 import { getOrCreateModel, getModelSafely } from '../util/mongoose-utils';
 import { getOrCreateModel, getModelSafely } from '../util/mongoose-utils';
-import loggerFactory from '../../utils/logger';
+
 import ActivityDefine from '../util/activityDefine';
 import ActivityDefine from '../util/activityDefine';
 
 
 import Subscription from './subscription';
 import Subscription from './subscription';
 
 
-const logger = loggerFactory('growi:models:activity');
-
 
 
 export interface ActivityDocument extends Document {
 export interface ActivityDocument extends Document {
   _id: Types.ObjectId
   _id: Types.ObjectId
@@ -28,7 +26,6 @@ export interface ActivityDocument extends Document {
 export type ActivityModel = Model<ActivityDocument>
 export type ActivityModel = Model<ActivityDocument>
 
 
 module.exports = function(crowi: Crowi) {
 module.exports = function(crowi: Crowi) {
-  const activityEvent = crowi.event('activity');
 
 
   // TODO: add revision id
   // TODO: add revision id
   const activitySchema = new Schema<ActivityDocument, ActivityModel>({
   const activitySchema = new Schema<ActivityDocument, ActivityModel>({
@@ -96,18 +93,6 @@ module.exports = function(crowi: Crowi) {
     return activeNotificationUsers;
     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);
-  });
-
   return getOrCreateModel<ActivityDocument, ActivityModel>('Activity', activitySchema);
   return getOrCreateModel<ActivityDocument, ActivityModel>('Activity', activitySchema);
 
 
 };
 };

+ 21 - 2
packages/app/src/server/service/activity.ts

@@ -1,7 +1,14 @@
+import {
+  Types,
+} from 'mongoose';
 import Crowi from '../crowi';
 import Crowi from '../crowi';
 
 
+
 import { getModelSafely } from '../util/mongoose-utils';
 import { getModelSafely } from '../util/mongoose-utils';
 
 
+import loggerFactory from '../../utils/logger';
+
+const logger = loggerFactory('growi:service:activity');
 
 
 class ActivityService {
 class ActivityService {
 
 
@@ -22,9 +29,21 @@ class ActivityService {
      * @param {object} parameters
      * @param {object} parameters
      * @return {Promise}
      * @return {Promise}
      */
      */
-  createByParameters = function(parameters) {
+  createByParameters = async function(parameters) {
     const Activity = getModelSafely('Activity') || require('../models/activity')(this.crowi);
     const Activity = getModelSafely('Activity') || require('../models/activity')(this.crowi);
-    return Activity.create(parameters);
+    const savedActivity = Activity.create(parameters);
+
+    let targetUsers: Types.ObjectId[] = [];
+    try {
+      targetUsers = await savedActivity.getNotificationTargetUsers();
+    }
+    catch (err) {
+      logger.error(err);
+    }
+
+    this.activityEvent.emit('create', targetUsers, savedActivity);
+
+    return savedActivity;
   };
   };