Преглед изворни кода

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

Vanessa пре 2 година
родитељ
комит
7e753908b8
3 измењених фајлова са 36 додато и 3 уклоњено
  1. 17 0
      kernel/api/sync.go
  2. 1 1
      kernel/model/assets.go
  3. 18 2
      kernel/util/file.go

+ 17 - 0
kernel/api/sync.go

@@ -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)
 }
 

+ 1 - 1
kernel/model/assets.go

@@ -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 {

+ 18 - 2
kernel/util/file.go

@@ -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