diff --git a/kernel/model/file.go b/kernel/model/file.go index 33773fb2f..ab5259684 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1012,7 +1012,11 @@ func MoveDocs(fromPaths []string, toBoxID, toPath string) (err error) { return } - fromPaths = util.FilterSelfChildDocs(fromPaths) + fromPaths = util.FilterMoveDocFromPaths(fromPaths, toPath) + if 1 > len(fromPaths) { + return + } + pathsBoxes := getBoxesByPaths(fromPaths) // 检查路径深度是否超过限制 @@ -1024,7 +1028,7 @@ func MoveDocs(fromPaths []string, toBoxID, toPath string) (err error) { } } - needShowProgress := 32 < len(fromPaths) + needShowProgress := 16 < len(fromPaths) if needShowProgress { util.PushEndlessProgress(Conf.Language(116)) } diff --git a/kernel/util/path.go b/kernel/util/path.go index 722018f75..741e8354a 100644 --- a/kernel/util/path.go +++ b/kernel/util/path.go @@ -175,6 +175,18 @@ func NormalizeEndpoint(endpoint string) string { return endpoint } +func FilterMoveDocFromPaths(fromPaths []string, toPath string) (ret []string) { + tmp := FilterSelfChildDocs(fromPaths) + for _, fromPath := range tmp { + fromDir := strings.TrimSuffix(fromPath, ".sy") + if strings.HasPrefix(toPath, fromDir) { + continue + } + ret = append(ret, fromPath) + } + return +} + func FilterSelfChildDocs(paths []string) (ret []string) { sort.Slice(paths, func(i, j int) bool { return strings.Count(paths[i], "/") < strings.Count(paths[j], "/") })