Browse Source

:sparkles: 编辑器式反链面板 https://github.com/siyuan-note/siyuan/issues/3565

Liang Ding 2 years ago
parent
commit
2155a56a7b
2 changed files with 10 additions and 3 deletions
  1. 2 1
      kernel/api/ref.go
  2. 8 2
      kernel/model/backlink.go

+ 2 - 1
kernel/api/ref.go

@@ -48,8 +48,9 @@ func getBackmentionDoc(c *gin.Context) {
 	}
 
 	defID := arg["defID"].(string)
+	refTreeID := arg["refTreeID"].(string)
 	keyword := ""
-	backlinks := model.GetBackmentionDoc(defID, keyword)
+	backlinks := model.GetBackmentionDoc(defID, refTreeID, keyword)
 	ret.Data = map[string]interface{}{
 		"backmentions": backlinks,
 	}

+ 8 - 2
kernel/model/backlink.go

@@ -164,7 +164,7 @@ type Backlink struct {
 	Expand     bool         `json:"expand"`
 }
 
-func GetBackmentionDoc(defID, keyword string) (ret []*Backlink) {
+func GetBackmentionDoc(defID, refTreeID, keyword string) (ret []*Backlink) {
 	ret = []*Backlink{}
 	beforeLen := 12
 	sqlBlock := sql.GetBlock(defID)
@@ -177,9 +177,15 @@ func GetBackmentionDoc(defID, keyword string) (ret []*Backlink) {
 	refs = removeDuplicatedRefs(refs) // 同一个块中引用多个相同块时反链去重 https://github.com/siyuan-note/siyuan/issues/3317
 
 	linkRefs, excludeBacklinkIDs := buildLinkRefs(rootID, refs)
-	mentions := buildTreeBackmention(sqlBlock, linkRefs, keyword, excludeBacklinkIDs, beforeLen)
+	tmpMentions := buildTreeBackmention(sqlBlock, linkRefs, keyword, excludeBacklinkIDs, beforeLen)
 	luteEngine := NewLute()
 	treeCache := map[string]*parse.Tree{}
+	var mentions []*Block
+	for _, mention := range tmpMentions {
+		if mention.RootID == refTreeID {
+			mentions = append(mentions, mention)
+		}
+	}
 	for _, mention := range mentions {
 		refTree := treeCache[mention.RootID]
 		if nil == refTree {