Shun Miyazawa 4 лет назад
Родитель
Сommit
f2add41eec
2 измененных файлов с 14 добавлено и 5 удалено
  1. 2 0
      packages/app/src/interfaces/activity.ts
  2. 12 5
      packages/app/src/server/service/page.ts

+ 2 - 0
packages/app/src/interfaces/activity.ts

@@ -5,6 +5,7 @@ const MODEL_COMMENT = 'Comment';
 // Action
 const ACTION_PAGE_LIKE = 'PAGE_LIKE';
 const ACTION_PAGE_BOOKMARK = 'PAGE_BOOKMARK';
+const ACTION_PAGE_CREATE = 'PAGE_CREATE';
 const ACTION_PAGE_UPDATE = 'PAGE_UPDATE';
 const ACTION_PAGE_RENAME = 'PAGE_RENAME';
 const ACTION_PAGE_DUPLICATE = 'PAGE_DUPLICATE';
@@ -26,6 +27,7 @@ export const SUPPORTED_EVENT_MODEL_TYPE = {
 export const SUPPORTED_ACTION_TYPE = {
   ACTION_PAGE_LIKE,
   ACTION_PAGE_BOOKMARK,
+  ACTION_PAGE_CREATE,
   ACTION_PAGE_UPDATE,
   ACTION_PAGE_RENAME,
   ACTION_PAGE_DUPLICATE,

+ 12 - 5
packages/app/src/server/service/page.ts

@@ -18,6 +18,7 @@ import {
 import { IUserHasId } from '~/interfaces/user';
 import { SocketEventName, UpdateDescCountRawData } from '~/interfaces/websocket';
 import { stringifySnapshot } from '~/models/serializers/in-app-notification-snapshot/page';
+import { ActivityDocument } from '~/server/models/activity';
 import {
   CreateMethod, PageCreateOptions, PageModel, PageDocument,
 } from '~/server/models/page';
@@ -2229,12 +2230,9 @@ class PageService {
     return shortBodiesMap;
   }
 
-  private async createAndSendNotifications(page, user, action) {
-    const { activityService, inAppNotificationService } = this.crowi;
-
-    const snapshot = stringifySnapshot(page);
+  private async createActivity(page, user, action) {
+    const { activityService } = this.crowi;
 
-    // Create activity
     const parameters = {
       user: user._id,
       targetModel: SUPPORTED_TARGET_MODEL_TYPE.MODEL_PAGE,
@@ -2243,10 +2241,19 @@ class PageService {
     };
     const activity = await activityService.createByParameters(parameters);
 
+    return activity;
+  }
+
+  private async createAndSendNotifications(page, user, action) {
+    const { inAppNotificationService } = this.crowi;
+
+    const activity = (this.createActivity(page, user, action) as any) as ActivityDocument;
+
     // Get user to be notified
     const targetUsers = await activity.getNotificationTargetUsers();
 
     // Create and send notifications
+    const snapshot = stringifySnapshot(page);
     await inAppNotificationService.upsertByActivity(targetUsers, activity, snapshot);
     await inAppNotificationService.emitSocketIo(targetUsers);
   }