浏览代码

:art: Improve dynamic anchor text auto-refresh stability https://github.com/siyuan-note/siyuan/issues/8234

Daniel 10 月之前
父节点
当前提交
fa3abe615e
共有 2 个文件被更改,包括 13 次插入4 次删除
  1. 11 2
      kernel/model/transaction.go
  2. 2 2
      kernel/util/websocket.go

+ 11 - 2
kernel/model/transaction.go

@@ -1231,9 +1231,18 @@ func getRefDefIDs(node *ast.Node) (refDefIDs []string) {
 func pushSetDefRefCount(rootID, blockID string) {
 	sql.WaitForWritingDatabase()
 
-	refCounts := sql.QueryRefCount([]string{blockID})
+	bt := treenode.GetBlockTree(blockID)
+	if nil == bt {
+		return
+	}
+
+	refCounts := sql.QueryRootChildrenRefCount(bt.RootID)
 	refCount := refCounts[blockID]
-	util.PushSetDefRefCount(rootID, blockID, refCount)
+	var rootRefCount int
+	for _, count := range refCounts {
+		rootRefCount += count
+	}
+	util.PushSetDefRefCount(rootID, blockID, refCount, rootRefCount)
 }
 
 func upsertAvBlockRel(node *ast.Node) {

+ 2 - 2
kernel/util/websocket.go

@@ -262,8 +262,8 @@ func PushSetRefDynamicText(rootID, blockID, defBlockID, refText string) {
 	BroadcastByType("main", "setRefDynamicText", 0, "", map[string]interface{}{"rootID": rootID, "blockID": blockID, "defBlockID": defBlockID, "refText": refText})
 }
 
-func PushSetDefRefCount(rootID, blockID string, refCount int) {
-	BroadcastByType("main", "setDefRefCount", 0, "", map[string]interface{}{"rootID": rootID, "blockID": blockID, "refCount": refCount})
+func PushSetDefRefCount(rootID, blockID string, refCount, rootRefCount int) {
+	BroadcastByType("main", "setDefRefCount", 0, "", map[string]interface{}{"rootID": rootID, "blockID": blockID, "refCount": refCount, "rootRefCount": rootRefCount})
 }
 
 func PushProtyleLoading(rootID, msg string) {