diff --git a/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor index 28693829..cb9fb716 100644 --- a/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor +++ b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor @@ -22,7 +22,7 @@ else } else { - +
    @@ -50,7 +50,7 @@ else } else { - +
    @@ -76,8 +76,8 @@ else } @code { - private List _pages; - private List _modules; + private List _pages; + private List _modules; private int _pagePage = 1; private int _pageModule = 1; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; @@ -141,7 +141,7 @@ else try { ModuleInstance.ShowProgressIndicator(); - foreach (Page page in _pages.Where(item => item.IsDeleted)) + foreach (Page page in _pages.Where(item => item.IsDeleted)) { await PageService.DeletePageAsync(page.PageId); await logger.LogInformation("Page Permanently Deleted {Page}", page); @@ -186,7 +186,7 @@ else await PageModuleService.DeletePageModuleAsync(module.PageModuleId); // check if there are any remaining module instances in the site - if (!_modules.Exists(item => item.ModuleId == module.ModuleId)) + if (!_modules.Exists (item => item.ModuleId == module.ModuleId && item.PageModuleId != module.PageModuleId)) { await ModuleService.DeleteModuleAsync(module.ModuleId); } @@ -207,12 +207,14 @@ else try { ModuleInstance.ShowProgressIndicator(); - foreach (Module module in _modules.Where(item => item.IsDeleted)) + foreach (Module module in _modules.Where(item => item.IsDeleted).ToList()) { await PageModuleService.DeletePageModuleAsync(module.PageModuleId); + // DeletePageModuleAsync does not update _modules so remove it. + _modules.Remove(module); // check if there are any remaining module instances in the site - if (!_modules.Exists(item => item.ModuleId == module.ModuleId)) + if (!_modules.Exists(item => item.ModuleId == module.ModuleId && item.PageModuleId != module.PageModuleId)) { await ModuleService.DeleteModuleAsync(module.ModuleId); }