Browse Source

:art: Support listing for invalid block references in the search dialog https://github.com/siyuan-note/siyuan/issues/10396

Daniel 1 year ago
parent
commit
da9772f003
2 changed files with 15 additions and 5 deletions
  1. 1 1
      kernel/api/search.go
  2. 14 4
      kernel/model/search.go

+ 1 - 1
kernel/api/search.go

@@ -43,7 +43,7 @@ func listInvalidBlockRefs(c *gin.Context) {
 		page = 1
 	}
 
-	pageSize := 32
+	pageSize := 6
 	if nil != arg["pageSize"] {
 		pageSize = int(arg["pageSize"].(float64))
 	}

+ 14 - 4
kernel/model/search.go

@@ -153,6 +153,7 @@ func ListInvalidBlockRefs(page, pageSize int) (ret []*Block, matchedBlockCount,
 	invalidBlockIDs = gulu.Str.RemoveDuplicatedElem(invalidBlockIDs)
 
 	sort.Strings(invalidBlockIDs)
+	allInvalidBlockIDs := invalidBlockIDs
 
 	start := (page - 1) * pageSize
 	end := page * pageSize
@@ -162,17 +163,26 @@ func ListInvalidBlockRefs(page, pageSize int) (ret []*Block, matchedBlockCount,
 	invalidBlockIDs = invalidBlockIDs[start:end]
 
 	sqlBlocks := sql.GetBlocks(invalidBlockIDs)
+	var tmp []*sql.Block
+	for _, sqlBlock := range sqlBlocks {
+		if nil != sqlBlock {
+			tmp = append(tmp, sqlBlock)
+		}
+	}
+	sqlBlocks = tmp
+
 	ret = fromSQLBlocks(&sqlBlocks, "", 36)
 	if 1 > len(ret) {
 		ret = []*Block{}
 	}
-	matchedBlockCount = len(ret)
+	matchedBlockCount = len(allInvalidBlockIDs)
 	rootCount := map[string]bool{}
-	for _, block := range ret {
-		if nil == block {
+	for _, id := range allInvalidBlockIDs {
+		bt := treenode.GetBlockTree(id)
+		if nil == bt {
 			continue
 		}
-		rootCount[block.RootID] = true
+		rootCount[bt.RootID] = true
 	}
 	matchedRootCount = len(rootCount)
 	pageCount = (matchedBlockCount + pageSize - 1) / pageSize