diff --git a/kernel/api/block.go b/kernel/api/block.go index 13269d5dd..71d0a54e6 100644 --- a/kernel/api/block.go +++ b/kernel/api/block.go @@ -154,19 +154,7 @@ func checkBlockFold(c *gin.Context) { } id := arg["id"].(string) - b, err := model.GetBlock(id, nil) - if errors.Is(err, filelock.ErrUnableAccessFile) { - ret.Code = 2 - ret.Data = id - return - } - if errors.Is(err, model.ErrIndexing) { - ret.Code = 0 - ret.Data = false - return - } - - ret.Data = nil != b && "1" == b.IAL["fold"] + ret.Data = model.IsBlockFolded(id) } func checkBlockExist(c *gin.Context) { diff --git a/kernel/model/block.go b/kernel/model/block.go index d0775aeb7..b9b51f668 100644 --- a/kernel/model/block.go +++ b/kernel/model/block.go @@ -87,6 +87,22 @@ type Path struct { Created string `json:"created"` // 创建时间 } +func IsBlockFolded(id string) bool { + for i := 0; i < 32; i++ { + b, _ := getBlock(id, nil) + if nil == b { + return true + } + + if "1" == b.IAL["fold"] { + return true + } + + id = b.ParentID + } + return false +} + func RecentUpdatedBlocks() (ret []*Block) { ret = []*Block{}