From 03a10b7c88e71bd944ffc0b5a1f0575c8843e2cc Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Tue, 8 Jul 2025 17:53:13 +0800 Subject: [PATCH] :art: Improve mirror databases refresh after updating database view layout https://github.com/siyuan-note/siyuan/issues/15233 --- kernel/model/attribute_view.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 12d8d0199..826ef3409 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -254,13 +254,26 @@ func ChangeAttrViewLayout(blockID, avID string, layout av.LayoutType) (err error continue } - node.AttributeViewType = string(view.LayoutType) + changed := false attrs := parse.IAL2Map(node.KramdownIAL) - attrs[av.NodeAttrView] = view.ID - err = setNodeAttrs(node, tree, attrs) - if err != nil { - logging.LogWarnf("set node [%s] attrs failed: %s", bID, err) - return + if blockID == bID { // 当前操作的镜像库 + attrs[av.NodeAttrView] = view.ID + node.AttributeViewType = string(view.LayoutType) + changed = true + } else { + if view.ID == attrs[av.NodeAttrView] { + // 仅更新和当前操作的镜像库指定的视图相同的镜像库 + node.AttributeViewType = string(view.LayoutType) + changed = true + } + } + + if changed { + err = setNodeAttrs(node, tree, attrs) + if err != nil { + logging.LogWarnf("set node [%s] attrs failed: %s", bID, err) + return + } } }