diff --git a/kernel/filesys/tree.go b/kernel/filesys/tree.go index 948821f4f..2d03ce271 100644 --- a/kernel/filesys/tree.go +++ b/kernel/filesys/tree.go @@ -42,6 +42,12 @@ func LoadTree(boxID, p string, luteEngine *lute.Lute) (ret *parse.Tree, err erro if nil != err { return } + + ret, err = LoadTreeByData(data, boxID, p, luteEngine) + return +} + +func LoadTreeByData(data []byte, boxID, p string, luteEngine *lute.Lute) (ret *parse.Tree, err error) { ret = parseJSON2Tree(boxID, p, data, luteEngine) if nil == ret { return nil, errors.New("parse tree failed") @@ -88,7 +94,7 @@ func LoadTree(boxID, p string, luteEngine *lute.Lute) (ret *parse.Tree, err erro ial := ReadDocIAL(parentData) if 1 > len(ial) { - logging.LogWarnf("tree [%s] is corrupted", filePath) + logging.LogWarnf("tree [%s] is corrupted", filepath.Join(boxID, p)) } title := ial["title"] if "" == title { diff --git a/kernel/model/assets.go b/kernel/model/assets.go index add83cead..400f67359 100644 --- a/kernel/model/assets.go +++ b/kernel/model/assets.go @@ -40,6 +40,7 @@ import ( "github.com/siyuan-note/httpclient" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/cache" + "github.com/siyuan-note/siyuan/kernel/filesys" "github.com/siyuan-note/siyuan/kernel/search" "github.com/siyuan-note/siyuan/kernel/sql" "github.com/siyuan-note/siyuan/kernel/treenode" @@ -503,6 +504,7 @@ func RenameAsset(oldPath, newName string) (err error) { return } + luteEngine := NewLute() for _, notebook := range notebooks { pages := pagedPaths(filepath.Join(util.DataDir, notebook.ID), 32) @@ -528,11 +530,10 @@ func RenameAsset(oldPath, newName string) (err error) { } p := filepath.ToSlash(strings.TrimPrefix(treeAbsPath, filepath.Join(util.DataDir, notebook.ID))) - tree, parseErr := LoadTree(notebook.ID, p) + tree, parseErr := filesys.LoadTreeByData(data, notebook.ID, p, luteEngine) if nil != parseErr { - logging.LogErrorf("parse json to tree [%s] failed: %s", treeAbsPath, parseErr) - err = parseErr - return + logging.LogWarnf("parse json to tree [%s] failed: %s", treeAbsPath, parseErr) + continue } treenode.IndexBlockTree(tree)