From 512e72700cb395d7749223be46a4fca2299f04db Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Tue, 1 Oct 2024 23:43:05 +0800 Subject: [PATCH] :art: Improve database primary key content update for bound container blocks https://github.com/siyuan-note/siyuan/issues/12664 --- kernel/model/push_reload.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/kernel/model/push_reload.go b/kernel/model/push_reload.go index a1b65bd1f..55984026a 100644 --- a/kernel/model/push_reload.go +++ b/kernel/model/push_reload.go @@ -234,7 +234,24 @@ func refreshDynamicRefTexts(updatedDefNodes map[string]*ast.Node, updatedTrees m } // 2. 更新属性视图主键内容 + var parents []*ast.Node for _, updatedDefNode := range updatedDefNodes { + parent := updatedDefNode.Parent + for ; nil != parent && ast.NodeDocument != parent.Type && parent.IsContainerBlock(); parent = parent.Parent { + if ast.NodeDocument != parent.Type && parent.IsContainerBlock() && treenode.FirstLeafBlock(parent) == updatedDefNode { + parents = append(parents, parent) + } + } + } + for _, parent := range parents { + updatedDefNodes[parent.ID] = parent + } + + for _, updatedDefNode := range updatedDefNodes { + if nil != updatedDefNode.Parent && ast.NodeDocument != updatedDefNode.Parent.Type && + updatedDefNode.Parent.IsContainerBlock() && treenode.FirstLeafBlock(updatedDefNode.Parent) == updatedDefNode { + updatedDefNode = updatedDefNode.Parent + } avs := updatedDefNode.IALAttr(av.NodeAttrNameAvs) if "" == avs { continue