فهرست منبع

use SocketEventName

Shun Miyazawa 1 سال پیش
والد
کامیت
990d8746b8

+ 3 - 2
apps/app/src/components/Navbar/PageEditorModeManager.tsx

@@ -7,6 +7,7 @@ import { useTranslation } from 'next-i18next';
 
 
 import { useCreatePageAndTransit } from '~/client/services/create-page';
 import { useCreatePageAndTransit } from '~/client/services/create-page';
 import { toastError } from '~/client/util/toastr';
 import { toastError } from '~/client/util/toastr';
+import { SocketEventName } from '~/interfaces/websocket';
 import { useIsNotFound, useHasYjsDraft } from '~/stores/page';
 import { useIsNotFound, useHasYjsDraft } from '~/stores/page';
 import { EditorMode, useEditorMode, useIsDeviceLargerThanMd } from '~/stores/ui';
 import { EditorMode, useEditorMode, useIsDeviceLargerThanMd } from '~/stores/ui';
 
 
@@ -96,10 +97,10 @@ export const PageEditorModeManager = (props: Props): JSX.Element => {
       mutateHasYjsDraft(hasYjsDraft);
       mutateHasYjsDraft(hasYjsDraft);
     };
     };
 
 
-    socket.on('yjsDraft:update', yjsDraftUpdateHandler);
+    socket.on(SocketEventName.YjsUpdated, yjsDraftUpdateHandler);
 
 
     return () => {
     return () => {
-      socket.off('yjsDraft:update', yjsDraftUpdateHandler);
+      socket.off(SocketEventName.YjsUpdated, yjsDraftUpdateHandler);
     };
     };
 
 
   }, [mutateHasYjsDraft, socket]);
   }, [mutateHasYjsDraft, socket]);

+ 3 - 0
apps/app/src/interfaces/websocket.ts

@@ -44,6 +44,9 @@ export const SocketEventName = {
   PageCreated: 'page:create',
   PageCreated: 'page:create',
   PageUpdated: 'page:update',
   PageUpdated: 'page:update',
   PageDeleted: 'page:delete',
   PageDeleted: 'page:delete',
+
+  // Yjs
+  YjsUpdated: 'yjsDraft:update',
 } as const;
 } as const;
 export type SocketEventName = typeof SocketEventName[keyof typeof SocketEventName];
 export type SocketEventName = typeof SocketEventName[keyof typeof SocketEventName];
 
 

+ 6 - 5
apps/app/src/server/service/yjs-connection-manager.ts

@@ -3,6 +3,8 @@ import { MongodbPersistence } from 'y-mongodb-provider';
 import { YSocketIO } from 'y-socket.io/dist/server';
 import { YSocketIO } from 'y-socket.io/dist/server';
 import * as Y from 'yjs';
 import * as Y from 'yjs';
 
 
+import { SocketEventName } from '~/interfaces/websocket';
+
 import { getMongoUri } from '../util/mongoose-utils';
 import { getMongoUri } from '../util/mongoose-utils';
 import { RoomPrefix, getRoomNameWithId } from '../util/socket-io-helpers';
 import { RoomPrefix, getRoomNameWithId } from '../util/socket-io-helpers';
 
 
@@ -74,11 +76,10 @@ class YjsConnectionManager {
       await this.mdb.flushDocument(pageId);
       await this.mdb.flushDocument(pageId);
     });
     });
 
 
-    currentYdoc.once('update', async() => {
-      socket
-        .in(getRoomNameWithId(RoomPrefix.PAGE, pageId))
-        .emit('yjsDraft:update', true);
-    });
+    // Tell client that a draft has been created
+    socket
+      .in(getRoomNameWithId(RoomPrefix.PAGE, pageId))
+      .emit(SocketEventName.YjsUpdated, true);
 
 
     persistedYdoc.destroy();
     persistedYdoc.destroy();
   }
   }