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

This commit is contained in:
Vanessa 2023-01-20 11:58:44 +08:00
commit 7e753908b8
3 changed files with 36 additions and 3 deletions

View file

@ -40,6 +40,23 @@ func getBootSync(c *gin.Context) {
func performSync(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
arg, ok := util.JsonArg(c, ret)
if !ok {
return
}
// Android 端前后台切换时自动触发同步 https://github.com/siyuan-note/siyuan/issues/7122
var mobileSwitch bool
if mobileSwitchArg := arg["mobileSwitch"]; nil != mobileSwitchArg {
mobileSwitch = mobileSwitchArg.(bool)
}
if mobileSwitch {
if nil == model.Conf.User || !model.Conf.Sync.Enabled {
return
}
}
model.SyncData(false, false, true)
}

View file

@ -176,8 +176,8 @@ func NetImg2LocalAssets(rootID string) (err error) {
}
}
name = strings.TrimSuffix(name, ext)
name = gulu.Str.SubStr(name, 63) // 插入资源文件时文件名长度最大限制 63 个字 https://github.com/siyuan-note/siyuan/issues/7099
name = util.FilterFileName(name)
name = util.TruncateLenFileName(name)
name = "net-img-" + name + "-" + ast.NewNodeID() + ext
writePath := filepath.Join(assetsDirPath, name)
if err = filelock.WriteFile(writePath, data); nil != err {

View file

@ -17,12 +17,14 @@
package util
import (
"bytes"
"io"
"os"
"path"
"path/filepath"
"sort"
"strings"
"unicode/utf8"
"github.com/88250/gulu"
"github.com/88250/lute/ast"
@ -141,11 +143,25 @@ func FilterUploadFileName(name string) string {
ret = strings.ReplaceAll(ret, "#", "")
ret = strings.ReplaceAll(ret, "%", "")
ret = strings.ReplaceAll(ret, "$", "")
// 插入资源文件时文件名长度最大限制 63 个字 https://github.com/siyuan-note/siyuan/issues/7099
ret = gulu.Str.SubStr(ret, 63)
ret = TruncateLenFileName(ret)
return ret
}
func TruncateLenFileName(name string) (ret string) {
// 插入资源文件时文件名长度最大限制 189 字节 https://github.com/siyuan-note/siyuan/issues/7099
var byteCount int
buf := bytes.Buffer{}
for _, r := range name {
byteCount += utf8.RuneLen(r)
if 189 < byteCount {
break
}
buf.WriteRune(r)
}
ret = buf.String()
return
}
func FilterFilePath(p string) (ret string) {
parts := strings.Split(p, "/")
var filteredParts []string