diff --git a/Oqtane.Client/Modules/Admin/Files/Edit.razor b/Oqtane.Client/Modules/Admin/Files/Edit.razor index ec8881b5..b3099c5e 100644 --- a/Oqtane.Client/Modules/Admin/Files/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Files/Edit.razor @@ -265,17 +265,9 @@ } if (!isparent) { - var files = await FileService.GetFilesAsync(_folderId); - if (files.Count == 0) - { - await FolderService.DeleteFolderAsync(_folderId); - await logger.LogInformation("Folder Deleted {Folder}", _folderId); - NavigationManager.NavigateTo(NavigateUrl()); - } - else - { - AddModuleMessage(Localizer["Message.Folder.Files.InvalidDelete"], MessageType.Warning); - } + await FolderService.DeleteFolderAsync(_folderId); + await logger.LogInformation("Folder Deleted {Folder}", _folderId); + NavigationManager.NavigateTo(NavigateUrl()); } else { diff --git a/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx b/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx index c35e179e..c0c4cb8c 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Files/Edit.resx @@ -135,9 +135,6 @@ Error Saving Folder - - Folder Has Files And Cannot Be Deleted - Folder Has Subfolders And Cannot Be Deleted diff --git a/Oqtane.Server/Controllers/FolderController.cs b/Oqtane.Server/Controllers/FolderController.cs index 62545760..866f649b 100644 --- a/Oqtane.Server/Controllers/FolderController.cs +++ b/Oqtane.Server/Controllers/FolderController.cs @@ -20,14 +20,16 @@ namespace Oqtane.Controllers { private readonly IFolderRepository _folders; private readonly IUserPermissions _userPermissions; + private readonly IFileRepository _files; private readonly ISyncManager _syncManager; private readonly ILogManager _logger; private readonly Alias _alias; - public FolderController(IFolderRepository folders, IUserPermissions userPermissions, ISyncManager syncManager, ILogManager logger, ITenantManager tenantManager) + public FolderController(IFolderRepository folders, IUserPermissions userPermissions, IFileRepository files, ISyncManager syncManager, ILogManager logger, ITenantManager tenantManager) { _folders = folders; _userPermissions = userPermissions; + _files = files; _syncManager = syncManager; _logger = logger; _alias = tenantManager.GetAlias(); @@ -283,12 +285,20 @@ namespace Oqtane.Controllers var folderPath = _folders.GetFolderPath(folder); if (Directory.Exists(folderPath)) { + // remove all files from disk (including thumbnails, etc...) foreach (var filePath in Directory.GetFiles(folderPath)) { System.IO.File.Delete(filePath); } Directory.Delete(folderPath); } + + // remove files from database + foreach (var file in _files.GetFiles(id)) + { + _files.DeleteFile(file.FileId); + } + _folders.DeleteFolder(id); _syncManager.AddSyncEvent(_alias, EntityNames.Folder, folder.FolderId, SyncEventActions.Delete); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Folder Deleted {FolderId}", id);