DocumentPage.hooks.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { useEffect, useRef, useState } from 'react';
  2. import {
  3. DocumentEventGetDocument,
  4. DocumentVersionPB,
  5. OpenDocumentPayloadPB,
  6. } from '../../services/backend/events/flowy-document';
  7. import { useParams } from 'react-router-dom';
  8. import { DocumentData } from '../interfaces/document';
  9. import { DocumentController } from '$app/stores/effects/document/document_controller';
  10. export const useDocument = () => {
  11. const params = useParams();
  12. const [ documentId, setDocumentId ] = useState<string>();
  13. const [ documentData, setDocumentData ] = useState<DocumentData>();
  14. const [ controller, setController ] = useState<DocumentController | null>(null);
  15. useEffect(() => {
  16. void (async () => {
  17. if (!params?.id) return;
  18. const c = new DocumentController(params.id);
  19. setController(c);
  20. const res = await c.open();
  21. console.log(res)
  22. if (!res) return;
  23. // setDocumentData(res)
  24. setDocumentId(params.id)
  25. })();
  26. return () => {
  27. console.log('==== leave ====', params?.id)
  28. }
  29. }, [params.id]);
  30. return { documentId, documentData, controller };
  31. };