Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2024-12-20 09:39:32 +08:00
commit 2f4c7ffbb5
3 changed files with 37 additions and 2 deletions

View file

@ -961,6 +961,12 @@ func MissingAssets() (ret []string) {
}
func emojisInTree(tree *parse.Tree) (ret []string) {
if icon := tree.Root.IALAttr("icon"); "" != icon {
if !strings.Contains(icon, "://") && !strings.HasPrefix(icon, "api/icon/") {
ret = append(ret, "/emojis/"+icon)
}
}
ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus {
if !entering {
return ast.WalkContinue

View file

@ -751,7 +751,7 @@ func ExportMarkdownHTML(id, savePath string, docx, merge bool) (name, dom string
from := filepath.Join(util.DataDir, emoji)
to := filepath.Join(savePath, emoji)
if err := filelock.Copy(from, to); err != nil {
logging.LogErrorf("copy emojis from [%s] to [%s] failed: %s", from, savePath, err)
logging.LogErrorf("copy emojis from [%s] to [%s] failed: %s", from, to, err)
return
}
}
@ -909,7 +909,7 @@ func ExportHTML(id, savePath string, pdf, image, keepFold, merge bool) (name, do
from := filepath.Join(util.DataDir, emoji)
to := filepath.Join(savePath, emoji)
if err := filelock.Copy(from, to); err != nil {
logging.LogErrorf("copy emojis from [%s] to [%s] failed: %s", from, savePath, err)
logging.LogErrorf("copy emojis from [%s] to [%s] failed: %s", from, to, err)
return
}
}
@ -1722,6 +1722,16 @@ func exportSYZip(boxID, rootDirPath, baseFolderName string, docPaths []string) (
copiedAssets.Add(asset)
}
// 复制自定义表情图片
emojis := emojisInTree(tree)
for _, emoji := range emojis {
from := filepath.Join(util.DataDir, emoji)
to := filepath.Join(exportFolder, emoji)
if copyErr := filelock.Copy(from, to); copyErr != nil {
logging.LogErrorf("copy emojis from [%s] to [%s] failed: %s", from, to, copyErr)
}
}
}
// 导出数据库 Attribute View export https://github.com/siyuan-note/siyuan/issues/8710

View file

@ -554,6 +554,25 @@ func ImportSY(zipPath, boxID, toPath string) (err error) {
os.RemoveAll(assets)
}
// 将包含的自定义表情统一移动到 data/emojis/ 下
var emojiDirs []string
filelock.Walk(unzipRootPath, func(path string, d fs.DirEntry, err error) error {
if strings.Contains(path, "emojis") && d.IsDir() {
emojiDirs = append(emojiDirs, path)
}
return nil
})
dataEmojis := filepath.Join(util.DataDir, "emojis")
for _, emojis := range emojiDirs {
if gulu.File.IsDir(emojis) {
if err = filelock.Copy(emojis, dataEmojis); err != nil {
logging.LogErrorf("copy emojis from [%s] to [%s] failed: %s", emojis, dataEmojis, err)
return
}
}
os.RemoveAll(emojis)
}
var baseTargetPath string
if "/" == toPath {
baseTargetPath = "/"