Selaa lähdekoodia

:art: https://github.com/siyuan-note/siyuan/issues/11542

Daniel 1 vuosi sitten
vanhempi
commit
d9a19bb3dc
2 muutettua tiedostoa jossa 20 lisäystä ja 5 poistoa
  1. 5 1
      kernel/api/block.go
  2. 15 4
      kernel/model/block.go

+ 5 - 1
kernel/api/block.go

@@ -233,7 +233,11 @@ func checkBlockFold(c *gin.Context) {
 	}
 
 	id := arg["id"].(string)
-	ret.Data = model.IsBlockFolded(id)
+	isFolded, isRoot := model.IsBlockFolded(id)
+	ret.Data = map[string]interface{}{
+		"isFolded": isFolded,
+		"isRoot":   isRoot,
+	}
 }
 
 func checkBlockExist(c *gin.Context) {

+ 15 - 4
kernel/model/block.go

@@ -268,20 +268,31 @@ func GetBlockSiblingID(id string) (parent, previous, next string) {
 	return
 }
 
-func IsBlockFolded(id string) bool {
+func IsBlockFolded(id string) (isFolded, isRoot bool) {
+	tree, _ := LoadTreeByBlockID(id)
+	if nil == tree {
+		return
+	}
+
+	if tree.Root.ID == id {
+		isRoot = true
+	}
+
 	for i := 0; i < 32; i++ {
 		b, _ := getBlock(id, nil)
 		if nil == b {
-			return false
+			return
 		}
 
 		if "1" == b.IAL["fold"] {
-			return true
+			isFolded = true
+			return
 		}
 
 		id = b.ParentID
+
 	}
-	return false
+	return
 }
 
 func RecentUpdatedBlocks() (ret []*Block) {