diff --git a/app/src/dialog/processSystem.ts b/app/src/dialog/processSystem.ts index d7fb6df3a..f94270c2f 100644 --- a/app/src/dialog/processSystem.ts +++ b/app/src/dialog/processSystem.ts @@ -25,6 +25,7 @@ import {App} from "../index"; import {saveScroll} from "../protyle/scroll/saveScroll"; import {isInAndroid, isInHarmony, isInIOS, setStorageVal} from "../protyle/util/compatibility"; import {Plugin} from "../plugin"; +import {blockRender} from "../protyle/render/blockRender"; const updateTitle = (rootID: string, tab: Tab, protyle?: IProtyle) => { fetchPost("/api/block/getDocInfo", { @@ -156,14 +157,28 @@ export const setRefDynamicText = (data: { "refText": string, "rootID": string }) => { - getAllEditor().forEach(item => { + getAllEditor().forEach(editor => { // 不能对比 rootId,否则嵌入块中的锚文本无法更新 - item.protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${data.blockID}"] span[data-type~="block-ref"][data-subtype="d"][data-id="${data.defBlockID}"]`).forEach(item => { + editor.protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${data.blockID}"] span[data-type~="block-ref"][data-subtype="d"][data-id="${data.defBlockID}"]`).forEach(item => { item.innerHTML = data.refText; }); }); }; +export const reloadEmbedBlock = (data: { + "embedBlockID": string, + "rootID": string +}) => { + getAllEditor().forEach(editor => { + if (editor.protyle.block.rootID === data.rootID) { + editor.protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${data.embedBlockID}"]`).forEach(item => { + item.removeAttribute("data-render"); + blockRender(editor.protyle, item); + }); + } + }); +}; + export const setDefRefCount = (data: { "blockID": string, "refCount": number, diff --git a/app/src/index.ts b/app/src/index.ts index 4bb8a2519..79fd9e99b 100644 --- a/app/src/index.ts +++ b/app/src/index.ts @@ -16,7 +16,7 @@ import { processSync, progressBackgroundTask, progressLoading, - progressStatus, + progressStatus, reloadEmbedBlock, reloadSync, setDefRefCount, setRefDynamicText, @@ -67,6 +67,9 @@ export class App { case "setRefDynamicText": setRefDynamicText(data.data); break; + case "reloadEmbedBlock": + reloadEmbedBlock(data.data); + break; case "reloadPlugin": reloadPlugin(this, data.data); break; diff --git a/app/src/mobile/util/onMessage.ts b/app/src/mobile/util/onMessage.ts index e03f47708..be5cb69e6 100644 --- a/app/src/mobile/util/onMessage.ts +++ b/app/src/mobile/util/onMessage.ts @@ -2,7 +2,7 @@ import {openMobileFileById} from "../editor"; import { processSync, progressLoading, - progressStatus, + progressStatus, reloadEmbedBlock, reloadSync, setDefRefCount, setRefDynamicText, transactionError } from "../../dialog/processSystem"; @@ -19,6 +19,9 @@ export const onMessage = (app: App, data: IWebSocketData) => { case "setRefDynamicText": setRefDynamicText(data.data); break; + case "reloadEmbedBlock": + reloadEmbedBlock(data.data); + break; case "reloadPlugin": reloadPlugin(app, data.data); break; diff --git a/app/src/window/index.ts b/app/src/window/index.ts index d8a6d8765..9f935c3f6 100644 --- a/app/src/window/index.ts +++ b/app/src/window/index.ts @@ -12,7 +12,7 @@ import { processSync, progressBackgroundTask, progressLoading, - progressStatus, + progressStatus, reloadEmbedBlock, reloadSync, setDefRefCount, setRefDynamicText, @@ -60,6 +60,9 @@ class App { case "setRefDynamicText": setRefDynamicText(data.data); break; + case "reloadEmbedBlock": + reloadEmbedBlock(data.data); + break case "reloadPlugin": reloadPlugin(this, data.data); break;