fix(core): open page info modal error (#8396)
This commit is contained in:
@@ -7,13 +7,24 @@ import {
|
|||||||
import { DocInfoService } from '@affine/core/modules/doc-info';
|
import { DocInfoService } from '@affine/core/modules/doc-info';
|
||||||
import { DocsSearchService } from '@affine/core/modules/docs-search';
|
import { DocsSearchService } from '@affine/core/modules/docs-search';
|
||||||
import { useI18n } from '@affine/i18n';
|
import { useI18n } from '@affine/i18n';
|
||||||
|
import type { Doc } from '@toeverything/infra';
|
||||||
import {
|
import {
|
||||||
|
DocsService,
|
||||||
|
FrameworkScope,
|
||||||
LiveData,
|
LiveData,
|
||||||
useLiveData,
|
useLiveData,
|
||||||
useService,
|
useService,
|
||||||
useServices,
|
useServices,
|
||||||
} from '@toeverything/infra';
|
} from '@toeverything/infra';
|
||||||
import { Suspense, useCallback, useContext, useMemo, useRef } from 'react';
|
import {
|
||||||
|
Suspense,
|
||||||
|
useCallback,
|
||||||
|
useContext,
|
||||||
|
useEffect,
|
||||||
|
useMemo,
|
||||||
|
useRef,
|
||||||
|
useState,
|
||||||
|
} from 'react';
|
||||||
|
|
||||||
import { BlocksuiteHeaderTitle } from '../../../blocksuite/block-suite-header/title';
|
import { BlocksuiteHeaderTitle } from '../../../blocksuite/block-suite-header/title';
|
||||||
import { managerContext } from '../common';
|
import { managerContext } from '../common';
|
||||||
@@ -31,10 +42,26 @@ import { TimeRow } from './time-row';
|
|||||||
export const InfoModal = () => {
|
export const InfoModal = () => {
|
||||||
const modal = useService(DocInfoService).modal;
|
const modal = useService(DocInfoService).modal;
|
||||||
const docId = useLiveData(modal.docId$);
|
const docId = useLiveData(modal.docId$);
|
||||||
|
const docsService = useService(DocsService);
|
||||||
|
|
||||||
if (!docId) return null;
|
const [doc, setDoc] = useState<Doc | null>(null);
|
||||||
|
useEffect(() => {
|
||||||
|
if (!docId) return;
|
||||||
|
const docRef = docsService.open(docId);
|
||||||
|
setDoc(docRef.doc);
|
||||||
|
return () => {
|
||||||
|
docRef.release();
|
||||||
|
setDoc(null);
|
||||||
|
};
|
||||||
|
}, [docId, docsService]);
|
||||||
|
|
||||||
return <InfoModalOpened docId={docId} />;
|
if (!doc || !docId) return null;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<FrameworkScope scope={doc.scope}>
|
||||||
|
<InfoModalOpened docId={docId} />
|
||||||
|
</FrameworkScope>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const InfoModalOpened = ({ docId }: { docId: string }) => {
|
const InfoModalOpened = ({ docId }: { docId: string }) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user