From 771ab2b87fb5177ecb2b98b5752de0c9cf816b3c Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 16 Mar 2025 10:54:09 +0800 Subject: [PATCH] :art: Improve query embed block auto refresh https://github.com/siyuan-note/siyuan/issues/14370 --- kernel/model/push_reload.go | 9 ++++++++- kernel/task/queue.go | 2 ++ kernel/util/websocket.go | 4 ++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/kernel/model/push_reload.go b/kernel/model/push_reload.go index 680a0d31d..8969018a4 100644 --- a/kernel/model/push_reload.go +++ b/kernel/model/push_reload.go @@ -233,8 +233,15 @@ func refreshDynamicRefTexts(updatedDefNodes map[string]*ast.Node, updatedTrees m // 推送动态锚文本节点刷新 for _, defNode := range changedDefNodes { - if "ref-d" == defNode.refType { + switch defNode.refType { + case "ref-d": task.AppendAsyncTaskWithDelay(task.SetRefDynamicText, 200*time.Millisecond, util.PushSetRefDynamicText, refTreeID, n.ID, defNode.id, defNode.refText) + case "embed": + go func() { + time.Sleep(100 * time.Millisecond) + sql.FlushQueue() + task.AppendAsyncTaskWithDelay(task.ReloadEmbedBlock, 200*time.Millisecond, util.PushReloadEmbedBlock, refTreeID, n.ID) + }() } } return ast.WalkContinue diff --git a/kernel/task/queue.go b/kernel/task/queue.go index 184275b9d..13fe7ad02 100644 --- a/kernel/task/queue.go +++ b/kernel/task/queue.go @@ -138,6 +138,7 @@ const ( ReloadProtyle = "task.reload.protyle" // 重新加载编辑器 SetRefDynamicText = "task.ref.setDynamicText" // 设置引用的动态锚文本 SetDefRefCount = "task.def.setRefCount" // 设置定义的引用计数 + ReloadEmbedBlock = "task.ref.reloadEmbedBlock" // 重新加载嵌入块 UpdateIDs = "task.update.ids" // 更新 ID PushMsg = "task.push.msg" // 推送消息 ) @@ -158,6 +159,7 @@ var uniqueActions = []string{ ReloadProtyle, SetRefDynamicText, SetDefRefCount, + ReloadEmbedBlock, UpdateIDs, } diff --git a/kernel/util/websocket.go b/kernel/util/websocket.go index 954c427ed..e5da158be 100644 --- a/kernel/util/websocket.go +++ b/kernel/util/websocket.go @@ -275,6 +275,10 @@ func PushSetDefRefCount(rootID, blockID string, defIDs []string, refCount, rootR BroadcastByType("main", "setDefRefCount", 0, "", map[string]interface{}{"rootID": rootID, "blockID": blockID, "refCount": refCount, "rootRefCount": rootRefCount, "defIDs": defIDs}) } +func PushReloadEmbedBlock(rootID, embedBlockID string) { + BroadcastByType("main", "reloadEmbedBlock", 0, "", map[string]interface{}{"rootID": rootID, "embedBlockID": embedBlockID}) +} + func PushProtyleLoading(rootID, msg string) { BroadcastByType("protyle", "addLoading", 0, msg, rootID) }