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);