yjs.ts 988 B

12345678910111213141516171819202122232425
  1. import { useEffect } from 'react';
  2. import { useGlobalSocket } from '@growi/core/dist/swr';
  3. import { SocketEventName } from '~/interfaces/websocket';
  4. import { useCurrentPageYjsData } from '~/stores/yjs';
  5. export const useCurrentPageYjsDataEffect = (): void => {
  6. const { data: socket } = useGlobalSocket();
  7. const { updateHasYdocsNewerThanLatestRevision, updateAwarenessStateSize } = useCurrentPageYjsData();
  8. useEffect(() => {
  9. if (socket == null) { return }
  10. socket.on(SocketEventName.YjsHasYdocsNewerThanLatestRevisionUpdated, updateHasYdocsNewerThanLatestRevision);
  11. socket.on(SocketEventName.YjsAwarenessStateSizeUpdated, updateAwarenessStateSize);
  12. return () => {
  13. socket.off(SocketEventName.YjsHasYdocsNewerThanLatestRevisionUpdated, updateHasYdocsNewerThanLatestRevision);
  14. socket.off(SocketEventName.YjsAwarenessStateSizeUpdated, updateAwarenessStateSize);
  15. };
  16. }, [socket, updateAwarenessStateSize, updateHasYdocsNewerThanLatestRevision]);
  17. };