From ac75a316412f4f03547d1448b8657c995f43ab01 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 26 Jul 2020 12:18:46 -0700 Subject: [PATCH] Fixed: Deleting empty episode folders on upgrade Fixed #3883 --- .../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 15a8ab5dc..b8c4b7ee0 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaFileDeletionService.cs @@ -117,23 +117,27 @@ namespace NzbDrone.Core.MediaFiles [EventHandleOrder(EventHandleOrder.Last)] public void Handle(EpisodeFileDeletedEvent message) { - if (message.Reason == DeleteMediaFileReason.Upgrade) - { - return; - } - if (_configService.DeleteEmptyFolders) { var series = message.EpisodeFile.Series.Value; - var seasonFolder = message.EpisodeFile.Path.GetParentPath(); + var seriesPath = series.Path; + var folder = message.EpisodeFile.Path.GetParentPath(); - if (_diskProvider.GetFiles(series.Path, SearchOption.AllDirectories).Empty()) + while (seriesPath.IsParentPath(folder)) { - _diskProvider.DeleteFolder(series.Path, true); + if (_diskProvider.FolderExists(folder)) + { + _diskProvider.RemoveEmptySubfolders(folder); + } + + folder = folder.GetParentPath(); } - else if (_diskProvider.GetFiles(seasonFolder, SearchOption.AllDirectories).Empty()) + + _diskProvider.RemoveEmptySubfolders(seriesPath); + + if (_diskProvider.FolderEmpty(seriesPath)) { - _diskProvider.RemoveEmptySubfolders(seasonFolder); + _diskProvider.DeleteFolder(seriesPath, true); } } }