From 41d994ca32f8efb6d76420e8042871278f13a741 Mon Sep 17 00:00:00 2001 From: Vashchuk Nikita Date: Tue, 15 Feb 2022 12:42:47 +0300 Subject: [PATCH] fix --- common/ASC.Data.Storage/S3/S3Storage.cs | 9 ++--- .../ASC.Files/Core/Core/FileStorageService.cs | 40 +++++++++---------- products/ASC.Files/Core/Utils/FileMarker.cs | 7 +++- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/common/ASC.Data.Storage/S3/S3Storage.cs b/common/ASC.Data.Storage/S3/S3Storage.cs index 6afa297ed2..df08369901 100644 --- a/common/ASC.Data.Storage/S3/S3Storage.cs +++ b/common/ASC.Data.Storage/S3/S3Storage.cs @@ -1039,11 +1039,10 @@ namespace ASC.Data.Storage.S3 private async Task> GetS3ObjectsAsync(string domain, string path = "", bool recycle = false) { path = MakePath(domain, path) + '/'; - var tmp = await GetS3ObjectsByPathAsync(domain, path); - var obj = tmp.ToList(); - if (string.IsNullOrEmpty(_recycleDir) || !recycle) return obj; - obj.AddRange(await GetS3ObjectsByPathAsync(domain, GetRecyclePath(path))); - return obj; + var s30Objects = await GetS3ObjectsByPathAsync(domain, path); + if (string.IsNullOrEmpty(_recycleDir) || !recycle) return s30Objects; + s30Objects.Concat(await GetS3ObjectsByPathAsync(domain, GetRecyclePath(path))); + return s30Objects; } diff --git a/products/ASC.Files/Core/Core/FileStorageService.cs b/products/ASC.Files/Core/Core/FileStorageService.cs index ae162d3804..a339ae6317 100644 --- a/products/ASC.Files/Core/Core/FileStorageService.cs +++ b/products/ASC.Files/Core/Core/FileStorageService.cs @@ -353,7 +353,7 @@ namespace ASC.Web.Files.Services.WCFService response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/xml"); return response; } - + public async Task> GetItemsAsync(IEnumerable filesId, IEnumerable foldersId, FilterType filter, bool subjectGroup, string subjectID, string search) { var subjectId = string.IsNullOrEmpty(subjectID) ? Guid.Empty : new Guid(subjectID); @@ -558,7 +558,7 @@ namespace ASC.Web.Files.Services.WCFService result = result.OfType>().Where(f => previewedType.Contains(FileUtility.GetFileTypeByFileName(f.Title))); return new List>(result); - } + } public async Task> CreateNewFileAsync(FileModel fileWrapper, bool enableExternalExt = false) { @@ -957,7 +957,7 @@ namespace ASC.Web.Files.Services.WCFService return new KeyValuePair, List>>(file, await GetFileHistoryAsync(fileId)); } - + public async Task> LockFileAsync(T fileId, bool lockfile) { var tagDao = GetTagDao(); @@ -1437,7 +1437,7 @@ namespace ASC.Web.Files.Services.WCFService return (checkedFiles, checkedFolders); } - + private async Task<(List, List)> MoveOrCopyFilesCheckAsync(IEnumerable filesId, IEnumerable foldersId, TTo destFolderId) { var checkedFiles = new List(); @@ -1464,24 +1464,22 @@ namespace ASC.Web.Files.Services.WCFService var folders = folderDao.GetFoldersAsync(foldersId); var foldersProject = folders.Where(folder => folder.FolderType == FolderType.BUNCH); - if (await foldersProject.CountAsync() > 0) + var toSubfolders = destFolderDao.GetFoldersAsync(toFolder.ID); + + await foreach (var folderProject in foldersProject) { - var toSubfolders = await destFolderDao.GetFoldersAsync(toFolder.ID).ToListAsync(); + var toSub = await toSubfolders.FirstOrDefaultAsync(to => Equals(to.Title, folderProject.Title)); + if (toSub == null) continue; - await foreach (var folderProject in foldersProject) - { - var toSub = toSubfolders.FirstOrDefault(to => Equals(to.Title, folderProject.Title)); - if (toSub == null) continue; + var filesPr = fileDao.GetFilesAsync(folderProject.ID); + var foldersTmp = folderDao.GetFoldersAsync(folderProject.ID); + var foldersPr = foldersTmp.Select(d => d.ID).ToListAsync(); - var filesPr = await fileDao.GetFilesAsync(folderProject.ID); - var foldersTmp = await folderDao.GetFoldersAsync(folderProject.ID).ToListAsync(); - var foldersPr = foldersTmp.Select(d => d.ID); - - var (cFiles, cFolders) = await MoveOrCopyFilesCheckAsync(filesPr, foldersPr, toSub.ID); - checkedFiles.AddRange(cFiles); - checkedFolders.AddRange(cFolders); - } + var (cFiles, cFolders) = await MoveOrCopyFilesCheckAsync(await filesPr, await foldersPr, toSub.ID); + checkedFiles.AddRange(cFiles); + checkedFolders.AddRange(cFolders); } + try { foreach (var pair in await folderDao.CanMoveOrCopyAsync(foldersId.ToArray(), toFolder.ID)) @@ -1592,7 +1590,7 @@ namespace ASC.Web.Files.Services.WCFService results = FileConverter.GetStatusAsync(files); } - await foreach(var res in results) + await foreach (var res in results) { yield return res; } @@ -2177,7 +2175,7 @@ namespace ASC.Web.Files.Services.WCFService //ErrorIf(!accounts.Any(), FilesCommonResource.ErrorMassage_MailAccountNotFound); //return new List(accounts); - } + } public async IAsyncEnumerable ChangeOwnerAsync(IEnumerable foldersId, IEnumerable filesId, Guid userId) { @@ -2261,7 +2259,7 @@ namespace ASC.Web.Files.Services.WCFService entries.Append(newFile); } - await foreach(var entrie in entries) + await foreach (var entrie in entries) { yield return entrie; } diff --git a/products/ASC.Files/Core/Utils/FileMarker.cs b/products/ASC.Files/Core/Utils/FileMarker.cs index 3feb9038ba..9877896d5a 100644 --- a/products/ASC.Files/Core/Utils/FileMarker.cs +++ b/products/ASC.Files/Core/Utils/FileMarker.cs @@ -357,8 +357,9 @@ namespace ASC.Web.Files.Utils T folderID; int valueNew; - var userFolderId = await internalFolderDao.GetFolderIDUserAsync(false, userID); - var privacyFolderId = await internalFolderDao.GetFolderIDPrivacyAsync(false, userID); + var userFolderIdTask = internalFolderDao.GetFolderIDUserAsync(false, userID); + var privacyFolderIdTask = internalFolderDao.GetFolderIDPrivacyAsync(false, userID); + var userFolderId = await userFolderIdTask; var removeTags = new List(); @@ -392,6 +393,8 @@ namespace ASC.Web.Files.Utils removeTags.AddRange(listTags); } + + var privacyFolderId = await privacyFolderIdTask; var parentFolders = await folderDao.GetParentFoldersAsync(folderID); parentFolders.Reverse();