فهرست منبع

Merge pull request #10616 from growilabs/fix/176038-page-seen-event-to-separate-module

fix: Page seen event to separate module
Yuki Takei 3 ماه پیش
والد
کامیت
178505ce24

+ 1 - 0
apps/app/config/logger/config.dev.js

@@ -32,6 +32,7 @@ module.exports = {
   'growi:service:g2g-transfer': 'debug',
 
   'growi:migration:add-installed-date-to-config': 'debug',
+  'growi:events:page:seen': 'debug',
 
   /*
    * configure level for client

+ 36 - 0
apps/app/src/server/service/page/events/seen.ts

@@ -0,0 +1,36 @@
+import type { IUserHasId } from '@growi/core/dist/interfaces';
+import type { HydratedDocument } from 'mongoose';
+import mongoose from 'mongoose';
+
+import type { PageDocument, PageModel } from '~/server/models/page';
+import loggerFactory from '~/utils/logger';
+
+const logger = loggerFactory('growi:events:page:seen');
+
+export const onSeen = async (
+  pageId: string,
+  user: IUserHasId,
+): Promise<void> => {
+  if (pageId == null || user == null) {
+    logger.warn('onSeen: pageId or user is null');
+    return;
+  }
+
+  try {
+    const Page = mongoose.model<HydratedDocument<PageDocument>, PageModel>(
+      'Page',
+    );
+
+    const page = await Page.findById(pageId);
+
+    if (page == null) {
+      logger.warn('onSeen: page not found', { pageId });
+      return;
+    }
+
+    await page.seen(user);
+    logger.debug('onSeen: successfully marked page as seen', { pageId });
+  } catch (err) {
+    logger.error('onSeen: failed to mark page as seen', err);
+  }
+};

+ 2 - 28
apps/app/src/server/service/page/index.ts

@@ -89,6 +89,7 @@ import type { IPageGrantService } from '../page-grant';
 import { preNotifyService } from '../pre-notify';
 import { getYjsService } from '../yjs';
 import { BULK_REINDEX_SIZE, LIMIT_FOR_MULTIPLE_PAGE_OP } from './consts';
+import { onSeen } from './events/seen';
 import type { IPageService } from './page-service';
 import { shouldUseV4Process } from './should-use-v4-process';
 
@@ -232,34 +233,7 @@ class PageService implements IPageService {
     this.pageEvent.on('addSeenUsers', this.pageEvent.onAddSeenUsers);
 
     // seen - mark page as seen by user
-    this.pageEvent.on(
-      'seen',
-      async (pageId: string, user: IUserHasId): Promise<void> => {
-        if (pageId == null || user == null) {
-          logger.warn('onSeen: pageId or user is null');
-          return;
-        }
-
-        try {
-          const Page = mongoose.model<
-            HydratedDocument<PageDocument>,
-            PageModel
-          >('Page');
-
-          const page = await Page.findById(pageId);
-
-          if (page == null) {
-            logger.warn('onSeen: page not found', { pageId });
-            return;
-          }
-
-          await page.seen(user);
-          logger.debug('onSeen: successfully marked page as seen', { pageId });
-        } catch (err) {
-          logger.error('onSeen: failed to mark page as seen', err);
-        }
-      },
-    );
+    this.pageEvent.on('seen', onSeen);
   }
 
   getEventEmitter(): EventEmitter {