🎨 Alert users when .sy file or database .json exceed 8MB https://github.com/siyuan-note/siyuan/issues/15451

This commit is contained in:
Daniel 2025-08-24 10:49:13 +08:00
parent f3cc641005
commit eb13c34fe5
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
22 changed files with 98 additions and 15 deletions

View file

@ -418,6 +418,7 @@ func setFiletree(c *gin.Context) {
model.Conf.Save()
util.UseSingleLineSave = model.Conf.FileTree.UseSingleLineSave
util.LargeFileWarningSize = model.Conf.FileTree.LargeFileWarningSize
ret.Data = model.Conf.FileTree
}

View file

@ -19,6 +19,7 @@ package av
import (
"errors"
"fmt"
"os"
"path/filepath"
"sort"
@ -543,6 +544,11 @@ func SaveAttributeView(av *AttributeView) (err error) {
logging.LogErrorf("save attribute view [%s] failed: %s", av.ID, err)
return
}
if util.ExceedLargeFileWarningSize(len(data)) {
msg := fmt.Sprintf(util.Langs[util.Lang][268], av.Name+" "+filepath.Base(avJSONPath), util.LargeFileWarningSize)
util.PushErrMsg(msg, 7000)
}
return
}

View file

@ -33,6 +33,7 @@ type FileTree struct {
RemoveDocWithoutConfirm bool `json:"removeDocWithoutConfirm"` // 删除文档时是否不需要确认
CloseTabsOnStart bool `json:"closeTabsOnStart"` // 启动时关闭所有页签
UseSingleLineSave bool `json:"useSingleLineSave"` // 使用单行保存文档 .sy 和属性视图 .json
LargeFileWarningSize int `json:"largeFileWarningSize"` // 大文件警告大小单位MB
Sort int `json:"sort"` // 排序方式
}
@ -47,5 +48,6 @@ func NewFileTree() *FileTree {
AllowCreateDeeper: false,
CloseTabsOnStart: false,
UseSingleLineSave: util.UseSingleLineSave,
LargeFileWarningSize: util.LargeFileWarningSize,
}
}

View file

@ -220,6 +220,11 @@ func WriteTree(tree *parse.Tree) (size uint64, err error) {
return
}
if util.ExceedLargeFileWarningSize(len(data)) {
msg := fmt.Sprintf(util.Langs[util.Lang][268], tree.Root.IALAttr("title")+" "+filepath.Base(filePath), util.LargeFileWarningSize)
util.PushErrMsg(msg, 7000)
}
afterWriteTree(tree)
return
}

View file

@ -218,6 +218,10 @@ func InitConf() {
Conf.FileTree.DocCreateSavePath = util.TrimSpaceInPath(Conf.FileTree.DocCreateSavePath)
Conf.FileTree.RefCreateSavePath = util.TrimSpaceInPath(Conf.FileTree.RefCreateSavePath)
util.UseSingleLineSave = Conf.FileTree.UseSingleLineSave
if 2 > Conf.FileTree.LargeFileWarningSize {
Conf.FileTree.LargeFileWarningSize = 8
}
util.LargeFileWarningSize = Conf.FileTree.LargeFileWarningSize
util.CurrentCloudRegion = Conf.CloudRegion

View file

@ -46,8 +46,14 @@ func DisableFeature(feature string) {
DisabledFeatures = gulu.Str.RemoveDuplicatedElem(DisabledFeatures)
}
// UseSingleLineSave 是否使用单行保存 .sy 和数据库 .json 文件。
var UseSingleLineSave = true
var (
UseSingleLineSave = true // UseSingleLineSave 是否使用单行保存 .sy 和数据库 .json 文件。
LargeFileWarningSize = 8 // LargeFileWarningSize 大文件警告大小单位MB
)
func ExceedLargeFileWarningSize(fileSize int) bool {
return fileSize > LargeFileWarningSize*1024*1024
}
// IsUILoaded 是否已经加载了 UI。
var IsUILoaded = false