Ryotaro Nagahara 2 месяцев назад
Родитель
Сommit
ca95f0d6c9

+ 3 - 24
apps/app/src/client/services/side-effects/page-seen-users-updated.ts

@@ -11,30 +11,9 @@ export const usePageSeenUsersUpdatedEffect = (): void => {
   const { mutate: mutatePageInfo } = useSWRxPageInfo(currentPageId);
 
   const seenUsersUpdatedHandler = useCallback(
-    (data: {
-      s2cMessagePageSeenUsersUpdated: {
-        pageId: string;
-        seenUserIds: string[];
-        seenUsersCount: number;
-      };
-    }) => {
-      const { s2cMessagePageSeenUsersUpdated } = data;
-
-      if (
-        currentPageId != null &&
-        currentPageId === s2cMessagePageSeenUsersUpdated.pageId
-      ) {
-        mutatePageInfo(
-          (currentData) => {
-            if (currentData == null) return currentData;
-            return {
-              ...currentData,
-              seenUserIds: s2cMessagePageSeenUsersUpdated.seenUserIds,
-              sumOfSeenUsers: s2cMessagePageSeenUsersUpdated.seenUsersCount,
-            };
-          },
-          { revalidate: false },
-        );
+    (data: { pageId: string }) => {
+      if (currentPageId != null && currentPageId === data.pageId) {
+        mutatePageInfo();
       }
     },
     [currentPageId, mutatePageInfo],

+ 0 - 21
apps/app/src/server/models/vo/s2c-message.ts

@@ -42,24 +42,3 @@ export class S2cMessagePageUpdated {
     }
   }
 }
-
-/**
- * Server-to-client message VO for page seenUsers update
- */
-export class S2cMessagePageSeenUsersUpdated {
-  pageId: string;
-
-  seenUserIds: string[];
-
-  seenUsersCount: number;
-
-  constructor(page: IPage) {
-    const serializedPage = serializePageSecurely(page);
-
-    this.pageId = serializedPage._id;
-    this.seenUserIds = serializedPage.seenUsers
-      .slice(0, 15)
-      .map((id: any) => (typeof id === 'string' ? id : id.toString()));
-    this.seenUsersCount = serializedPage.seenUsers.length;
-  }
-}

+ 4 - 11
apps/app/src/server/service/system-events/sync-page-status.ts

@@ -1,10 +1,7 @@
 import type Crowi from '~/server/crowi';
 import loggerFactory from '~/utils/logger';
 
-import {
-  S2cMessagePageSeenUsersUpdated,
-  S2cMessagePageUpdated,
-} from '../../models/vo/s2c-message';
+import { S2cMessagePageUpdated } from '../../models/vo/s2c-message';
 import S2sMessage from '../../models/vo/s2s-message';
 import type { S2sMessagingService } from '../s2s-messaging/base';
 import type { S2sMessageHandlable } from '../s2s-messaging/handlable';
@@ -143,19 +140,15 @@ class SyncPageStatusService implements S2sMessageHandlable {
     this.emitter.on('addSeenUsers', (page) => {
       logger.debug("'addSeenUsers' event emitted.");
 
-      const s2cMessagePageSeenUsersUpdated = new S2cMessagePageSeenUsersUpdated(
-        page,
-      );
+      const pageId = page._id.toString();
 
       // emit to the room for each page
       socketIoService
         .getDefaultSocket()
         .in(getRoomNameWithId(RoomPrefix.PAGE, page._id))
-        .emit('page:seenUsersUpdated', { s2cMessagePageSeenUsersUpdated });
+        .emit('page:seenUsersUpdated', { pageId });
 
-      this.publishToOtherServers('page:seenUsersUpdated', {
-        s2cMessagePageSeenUsersUpdated,
-      });
+      this.publishToOtherServers('page:seenUsersUpdated', { pageId });
     });
   }
 }