From ec15885680d6f5df18da3b5f317ec0abe5189114 Mon Sep 17 00:00:00 2001 From: Qstick Date: Mon, 3 Aug 2020 02:51:10 -0400 Subject: [PATCH] Fixed: Deleting empty folders on upgrade Fixes #4787 Fixes SENTRY RADARR-1F --- .../MediaFiles/MediaFileDeletionService.cs | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs b/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs index 4f06090a4..c23ef9f91 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs @@ -122,23 +122,27 @@ public void HandleAsync(MoviesDeletedEvent message) [EventHandleOrder(EventHandleOrder.Last)] public void Handle(MovieFileDeletedEvent message) { - if (message.Reason == DeleteMediaFileReason.Upgrade) - { - return; - } - if (_configService.DeleteEmptyFolders) { var movie = message.MovieFile.Movie; - var movieFileFolder = message.MovieFile.Path.GetParentPath(); + var moviePath = movie.Path; + var folder = message.MovieFile.Path.GetParentPath(); - if (_diskProvider.GetFiles(movie.Path, SearchOption.AllDirectories).Empty()) + while (moviePath.IsParentPath(folder)) { - _diskProvider.DeleteFolder(movie.Path, true); + if (_diskProvider.FolderExists(folder)) + { + _diskProvider.RemoveEmptySubfolders(folder); + } + + folder = folder.GetParentPath(); } - else if (_diskProvider.GetFiles(movieFileFolder, SearchOption.AllDirectories).Empty()) + + _diskProvider.RemoveEmptySubfolders(moviePath); + + if (_diskProvider.FolderEmpty(moviePath)) { - _diskProvider.RemoveEmptySubfolders(movieFileFolder); + _diskProvider.DeleteFolder(moviePath, true); } } }