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

Merge pull request #4520 from weseek/feat/79737-when-a-page-is-updated-emit-the-user-id-to-the-front-side-for-notification

Yuki Takei 4 лет назад
Родитель
Сommit
4a7d937186
1 измененных файлов с 12 добавлено и 17 удалено
  1. 12 17
      packages/app/src/server/service/page.js

+ 12 - 17
packages/app/src/server/service/page.js

@@ -33,20 +33,14 @@ class PageService {
 
 
     // update
     // update
     this.pageEvent.on('update', async(page, user) => {
     this.pageEvent.on('update', async(page, user) => {
-      const { inAppNotificationService } = this.crowi;
 
 
       this.pageEvent.onUpdate();
       this.pageEvent.onUpdate();
 
 
       try {
       try {
-        const savedActivity = await this.createByPageUpdate(page, user);
-        let targetUsers = [];
-        targetUsers = await savedActivity.getNotificationTargetUsers();
-
-        await inAppNotificationService.upsertByActivity(targetUsers, savedActivity);
+        await this.createAndSendNotifications(page, user);
       }
       }
       catch (err) {
       catch (err) {
         logger.error(err);
         logger.error(err);
-
       }
       }
     });
     });
 
 
@@ -766,25 +760,26 @@ class PageService {
     }
     }
   }
   }
 
 
-  /**
-   * @param {Page} page
-   * @param {User} user
-   * @return {Promise}
-   */
-  createByPageUpdate = async function(page, user) {
-    const { activityService } = this.crowi;
+  createAndSendNotifications = async function(page, user) {
 
 
+    const { activityService, inAppNotificationService } = this.crowi;
+
+    // Create activity
     const parameters = {
     const parameters = {
       user: user._id,
       user: user._id,
       targetModel: ActivityDefine.MODEL_PAGE,
       targetModel: ActivityDefine.MODEL_PAGE,
       target: page,
       target: page,
       action: ActivityDefine.ACTION_UPDATE,
       action: ActivityDefine.ACTION_UPDATE,
     };
     };
+    const activity = await activityService.createByParameters(parameters);
 
 
-    const savedActivity = await activityService.createByParameters(parameters);
-    return savedActivity;
-  };
+    // Get user to be notified
+    const targetUsers = await activity.getNotificationTargetUsers();
 
 
+    // Create and send notifications
+    await inAppNotificationService.upsertByActivity(targetUsers, activity);
+    await inAppNotificationService.emitSocketIo(targetUsers);
+  };
 
 
 }
 }