From 970b82a718061dbf9b6d00220ebc2d5a90039602 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 12 Jan 2025 01:07:55 +0800 Subject: [PATCH] :art: Improve list item, super block and blockquote backlink propagation https://github.com/siyuan-note/siyuan/issues/13776 --- kernel/api/filetree.go | 10 +++++++++- kernel/model/file.go | 4 +--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/kernel/api/filetree.go b/kernel/api/filetree.go index b8d24e38b36..8aa3e06b5a9 100644 --- a/kernel/api/filetree.go +++ b/kernel/api/filetree.go @@ -1114,6 +1114,14 @@ func getDoc(c *gin.Context) { if nil != isBacklinkArg { isBacklink = isBacklinkArg.(bool) } + originalRefBlockIDsArg := arg["originalRefBlockIDs"] + originalRefBlockIDs := map[string]string{} + if nil != originalRefBlockIDsArg { + m := originalRefBlockIDsArg.(map[string]interface{}) + for k, v := range m { + originalRefBlockIDs[k] = v.(string) + } + } highlightArg := arg["highlight"] highlight := true if nil != highlightArg { @@ -1121,7 +1129,7 @@ func getDoc(c *gin.Context) { } blockCount, content, parentID, parent2ID, rootID, typ, eof, scroll, boxID, docPath, isBacklinkExpand, keywords, err := - model.GetDoc(startID, endID, id, index, query, queryTypes, queryMethod, mode, size, isBacklink, highlight) + model.GetDoc(startID, endID, id, index, query, queryTypes, queryMethod, mode, size, isBacklink, originalRefBlockIDs, highlight) if model.ErrBlockNotFound == err { ret.Code = 3 return diff --git a/kernel/model/file.go b/kernel/model/file.go index 0af69204df2..459348cba0e 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -441,7 +441,7 @@ func ListDocTree(boxID, listPath string, sortMode int, flashcard, showHidden boo return } -func GetDoc(startID, endID, id string, index int, query string, queryTypes map[string]bool, queryMethod, mode int, size int, isBacklink, highlight bool) ( +func GetDoc(startID, endID, id string, index int, query string, queryTypes map[string]bool, queryMethod, mode int, size int, isBacklink bool, originalRefBlockIDs map[string]string, highlight bool) ( blockCount int, dom, parentID, parent2ID, rootID, typ string, eof, scroll bool, boxID, docPath string, isBacklinkExpand bool, keywords []string, err error) { //os.MkdirAll("pprof", 0755) //cpuProfile, _ := os.Create("pprof/GetDoc") @@ -603,8 +603,6 @@ func GetDoc(startID, endID, id string, index int, query string, queryTypes map[s var nodes []*ast.Node if isBacklink { // 引用计数浮窗请求,需要按照反链逻辑组装 https://github.com/siyuan-note/siyuan/issues/6853 - originalRefBlockIDs := map[string]string{} - // TODO 需要增加参数,使用 getRefIDs 返回的 originalRefBlockIDs 增加这个参数后才能支持计数浮窗内计算折叠状态 https://github.com/siyuan-note/siyuan/issues/13776 nodes, isBacklinkExpand = getBacklinkRenderNodes(node, originalRefBlockIDs) } else { // 如果同时存在 startID 和 endID,并且是动态加载的情况,则只加载 startID 和 endID 之间的块 [startID, endID]