mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-24 05:07:06 +08:00
fix(core): blocksuite editor runtime configs in correct timing (#10344)
This commit is contained in:
+1
-1
@@ -42,7 +42,7 @@ export interface AffineEditorContainer extends HTMLElement {
|
|||||||
page: Store;
|
page: Store;
|
||||||
doc: Store;
|
doc: Store;
|
||||||
docTitle: DocTitle;
|
docTitle: DocTitle;
|
||||||
host: EditorHost;
|
host?: EditorHost;
|
||||||
model: RootBlockModel | null;
|
model: RootBlockModel | null;
|
||||||
updateComplete: Promise<boolean>;
|
updateComplete: Promise<boolean>;
|
||||||
mode: DocMode;
|
mode: DocMode;
|
||||||
|
|||||||
+24
-32
@@ -67,46 +67,38 @@ const BlockSuiteEditorImpl = ({
|
|||||||
let canceled = false;
|
let canceled = false;
|
||||||
const disposableGroup = new DisposableGroup();
|
const disposableGroup = new DisposableGroup();
|
||||||
|
|
||||||
if (onEditorReady) {
|
// Invoke onLoad once the editor has been mounted to the DOM.
|
||||||
// Invoke onLoad once the editor has been mounted to the DOM.
|
if (canceled) {
|
||||||
editor.updateComplete
|
return;
|
||||||
.then(() => {
|
}
|
||||||
if (canceled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// host should be ready
|
|
||||||
|
|
||||||
// provide image proxy endpoint to blocksuite
|
// provide image proxy endpoint to blocksuite
|
||||||
const imageProxyUrl = new URL(
|
const imageProxyUrl = new URL(
|
||||||
BUILD_CONFIG.imageProxyUrl,
|
BUILD_CONFIG.imageProxyUrl,
|
||||||
server.baseUrl
|
server.baseUrl
|
||||||
).toString();
|
).toString();
|
||||||
const linkPreviewUrl = new URL(
|
|
||||||
BUILD_CONFIG.linkPreviewUrl,
|
|
||||||
server.baseUrl
|
|
||||||
).toString();
|
|
||||||
|
|
||||||
editor.host?.std.clipboard.use(
|
const linkPreviewUrl = new URL(
|
||||||
customImageProxyMiddleware(imageProxyUrl)
|
BUILD_CONFIG.linkPreviewUrl,
|
||||||
);
|
server.baseUrl
|
||||||
|
).toString();
|
||||||
|
|
||||||
page.get(LinkPreviewerService).setEndpoint(linkPreviewUrl);
|
editor.std.clipboard.use(customImageProxyMiddleware(imageProxyUrl));
|
||||||
|
page.get(LinkPreviewerService).setEndpoint(linkPreviewUrl);
|
||||||
|
page.get(ImageProxyService).setImageProxyURL(imageProxyUrl);
|
||||||
|
|
||||||
page.get(ImageProxyService).setImageProxyURL(imageProxyUrl);
|
editor.updateComplete
|
||||||
|
.then(() => {
|
||||||
return editor.host?.updateComplete;
|
if (onEditorReady) {
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
if (canceled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const dispose = onEditorReady(editor);
|
const dispose = onEditorReady(editor);
|
||||||
if (dispose) {
|
if (dispose) {
|
||||||
disposableGroup.add(dispose);
|
disposableGroup.add(dispose);
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
.catch(console.error);
|
})
|
||||||
}
|
.catch(error => {
|
||||||
|
console.error('Error updating editor', error);
|
||||||
|
});
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
canceled = true;
|
canceled = true;
|
||||||
|
|||||||
@@ -167,10 +167,7 @@ const DetailPageImpl = memo(function DetailPageImpl() {
|
|||||||
|
|
||||||
const onLoad = useCallback(
|
const onLoad = useCallback(
|
||||||
(editorContainer: AffineEditorContainer) => {
|
(editorContainer: AffineEditorContainer) => {
|
||||||
// blocksuite editor host
|
const std = editorContainer.std;
|
||||||
const editorHost = editorContainer.host;
|
|
||||||
|
|
||||||
const std = editorHost?.std;
|
|
||||||
const disposable = new DisposableGroup();
|
const disposable = new DisposableGroup();
|
||||||
if (std) {
|
if (std) {
|
||||||
const refNodeSlots = std.getOptional(RefNodeSlotsProvider);
|
const refNodeSlots = std.getOptional(RefNodeSlotsProvider);
|
||||||
@@ -179,7 +176,7 @@ const DetailPageImpl = memo(function DetailPageImpl() {
|
|||||||
// the event should not be emitted by AffineReference
|
// the event should not be emitted by AffineReference
|
||||||
refNodeSlots.docLinkClicked.on(
|
refNodeSlots.docLinkClicked.on(
|
||||||
({ pageId, params, openMode, event, host }) => {
|
({ pageId, params, openMode, event, host }) => {
|
||||||
if (host !== editorHost) {
|
if (host !== editorContainer.host) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
openMode ??=
|
openMode ??=
|
||||||
|
|||||||
@@ -139,9 +139,6 @@ const DetailPageImpl = () => {
|
|||||||
|
|
||||||
const onLoad = useCallback(
|
const onLoad = useCallback(
|
||||||
(editorContainer: AffineEditorContainer) => {
|
(editorContainer: AffineEditorContainer) => {
|
||||||
// blocksuite editor host
|
|
||||||
const editorHost = editorContainer.host;
|
|
||||||
|
|
||||||
// provide image proxy endpoint to blocksuite
|
// provide image proxy endpoint to blocksuite
|
||||||
const imageProxyUrl = new URL(
|
const imageProxyUrl = new URL(
|
||||||
BUILD_CONFIG.imageProxyUrl,
|
BUILD_CONFIG.imageProxyUrl,
|
||||||
@@ -153,14 +150,19 @@ const DetailPageImpl = () => {
|
|||||||
server.baseUrl
|
server.baseUrl
|
||||||
).toString();
|
).toString();
|
||||||
|
|
||||||
editorHost?.std.clipboard.use(customImageProxyMiddleware(imageProxyUrl));
|
editorContainer.std.clipboard.use(
|
||||||
editorHost?.doc.get(ImageProxyService).setImageProxyURL(imageProxyUrl);
|
customImageProxyMiddleware(imageProxyUrl)
|
||||||
|
);
|
||||||
|
editorContainer.doc
|
||||||
|
.get(ImageProxyService)
|
||||||
|
.setImageProxyURL(imageProxyUrl);
|
||||||
|
|
||||||
// provide link preview endpoint to blocksuite
|
// provide link preview endpoint to blocksuite
|
||||||
editorHost?.doc.get(LinkPreviewerService).setEndpoint(linkPreviewUrl);
|
editorContainer.doc.get(LinkPreviewerService).setEndpoint(linkPreviewUrl);
|
||||||
|
|
||||||
// provide page mode and updated date to blocksuite
|
// provide page mode and updated date to blocksuite
|
||||||
const refNodeService = editorHost?.std.getOptional(RefNodeSlotsProvider);
|
const refNodeService =
|
||||||
|
editorContainer.std.getOptional(RefNodeSlotsProvider);
|
||||||
const disposable = new DisposableGroup();
|
const disposable = new DisposableGroup();
|
||||||
if (refNodeService) {
|
if (refNodeService) {
|
||||||
disposable.add(
|
disposable.add(
|
||||||
|
|||||||
@@ -96,12 +96,9 @@ function DocPeekPreviewEditor({
|
|||||||
|
|
||||||
const handleOnEditorReady = useCallback(
|
const handleOnEditorReady = useCallback(
|
||||||
(editorContainer: AffineEditorContainer) => {
|
(editorContainer: AffineEditorContainer) => {
|
||||||
if (!editorContainer.host) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const disposableGroup = new DisposableGroup();
|
const disposableGroup = new DisposableGroup();
|
||||||
const refNodeSlots =
|
const refNodeSlots =
|
||||||
editorContainer.host.std.getOptional(RefNodeSlotsProvider);
|
editorContainer.std.getOptional(RefNodeSlotsProvider);
|
||||||
if (!refNodeSlots) return;
|
if (!refNodeSlots) return;
|
||||||
// doc change event inside peek view should be handled by peek view
|
// doc change event inside peek view should be handled by peek view
|
||||||
disposableGroup.add(
|
disposableGroup.add(
|
||||||
|
|||||||
Reference in New Issue
Block a user