From 1f46d16055d7143eb77eeb63e32d99b9aa32cf14 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 26 Jul 2024 19:04:01 +0800 Subject: [PATCH] :art: Supports converting network assets in the database to local https://github.com/siyuan-note/siyuan/issues/12096 --- kernel/model/assets.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/kernel/model/assets.go b/kernel/model/assets.go index 79ad3679993..4ac8e8eaa1a 100644 --- a/kernel/model/assets.go +++ b/kernel/model/assets.go @@ -1055,6 +1055,35 @@ func setAssetsLinkDest(node *ast.Node, oldDest, dest string) { node.TextMarkAHref = strings.ReplaceAll(node.TextMarkAHref, oldDest, dest) } else if ast.NodeAudio == node.Type || ast.NodeVideo == node.Type { node.Tokens = bytes.ReplaceAll(node.Tokens, []byte(oldDest), []byte(dest)) + } else if ast.NodeAttributeView == node.Type { + needWrite := false + attrView, _ := av.ParseAttributeView(node.AttributeViewID) + if nil == attrView { + return + } + + for _, keyValues := range attrView.KeyValues { + if av.KeyTypeMAsset != keyValues.Key.Type { + continue + } + + for _, value := range keyValues.Values { + if 1 > len(value.MAsset) { + continue + } + + for _, asset := range value.MAsset { + if oldDest == asset.Content && oldDest != dest { + asset.Content = dest + needWrite = true + } + } + } + } + + if needWrite { + av.SaveAttributeView(attrView) + } } }