From fef2f429f7476ea200315c85588342918a298a7d Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 15 Sep 2024 16:48:35 +0800 Subject: [PATCH] :art: Automatically refresh reference counts after adding or removing embed blocks https://github.com/siyuan-note/siyuan/issues/12480 --- kernel/model/transaction.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 6e93797f5..b80f39958 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -763,7 +763,6 @@ func (tx *Transaction) doDelete(operation *Operation) (ret *TxErr) { // 收集引用的定义块 ID refDefIDs := getRefDefIDs(node) // 推送定义节点引用计数 - refDefIDs = gulu.Str.RemoveDuplicatedElem(refDefIDs) for _, defID := range refDefIDs { defTree, _ := LoadTreeByBlockID(defID) if nil != defTree { @@ -1082,7 +1081,6 @@ func (tx *Transaction) doInsert(operation *Operation) (ret *TxErr) { // 收集引用的定义块 ID refDefIDs := getRefDefIDs(insertedNode) // 推送定义节点引用计数 - refDefIDs = gulu.Str.RemoveDuplicatedElem(refDefIDs) for _, defID := range refDefIDs { defTree, _ := LoadTreeByBlockID(defID) if nil != defTree { @@ -1233,9 +1231,13 @@ func getRefDefIDs(node *ast.Node) (refDefIDs []string) { if treenode.IsBlockRef(n) { refDefIDs = append(refDefIDs, n.TextMarkBlockRefID) + } else if treenode.IsEmbedBlockRef(n) { + defID := treenode.GetEmbedBlockRef(n) + refDefIDs = append(refDefIDs, defID) } return ast.WalkContinue }) + refDefIDs = gulu.Str.RemoveDuplicatedElem(refDefIDs) return }