Преглед на файлове

:bug: The doc title image index failed when using notebook-level assets https://github.com/siyuan-note/siyuan/issues/9936

Daniel преди 1 година
родител
ревизия
7b16c45c8e
променени са 2 файла, в които са добавени 9 реда и са изтрити 6 реда
  1. 8 5
      kernel/sql/asset.go
  2. 1 1
      kernel/sql/database.go

+ 8 - 5
kernel/sql/asset.go

@@ -62,7 +62,7 @@ func docTagSpans(n *ast.Node) (ret []*Span) {
 	return
 }
 
-func docTitleImgAsset(root *ast.Node) *Asset {
+func docTitleImgAsset(root *ast.Node, boxLocalPath, docDirLocalPath string) *Asset {
 	if p := treenode.GetDocTitleImgPath(root); "" != p {
 		if !util.IsAssetLinkDest([]byte(p)) {
 			return nil
@@ -70,11 +70,14 @@ func docTitleImgAsset(root *ast.Node) *Asset {
 
 		var hash string
 		var err error
-		absPath := filepath.Join(util.DataDir, p)
-		if hash, err = util.GetEtag(absPath); nil != err {
-			logging.LogErrorf("read asset [%s] data failed: %s", absPath, err)
-			return nil
+		if lp := assetLocalPath(p, boxLocalPath, docDirLocalPath); "" != lp {
+			hash, err = util.GetEtag(lp)
+			if nil != err {
+				logging.LogErrorf("calc asset [%s] hash failed: %s", lp, err)
+				return nil
+			}
 		}
+
 		name, _ := util.LastID(p)
 		asset := &Asset{
 			ID:      ast.NewNodeID(),

+ 1 - 1
kernel/sql/database.go

@@ -683,7 +683,7 @@ func buildSpanFromNode(n *ast.Node, tree *parse.Tree, rootID, boxID, p string) (
 		walkStatus = ast.WalkSkipChildren
 		return
 	case ast.NodeDocument:
-		if asset := docTitleImgAsset(n); nil != asset {
+		if asset := docTitleImgAsset(n, boxLocalPath, docDirLocalPath); nil != asset {
 			assets = append(assets, asset)
 		}
 		if tags := docTagSpans(n); 0 < len(tags) {