diff options
| author | gnattu <gnattu@users.noreply.github.com> | 2024-05-05 22:21:40 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-05 08:21:40 -0600 |
| commit | 3ae0fb90cba3040ad36d3a9f591ee6b3c1a46766 (patch) | |
| tree | b96de9ed4be9f1a12fb87fdbeada3b18d03ccfc4 | |
| parent | 77a101cc982a3d0aa14d230999cca2a452153a20 (diff) | |
Validate Collection Folders on adding and removal (#11444)
| -rw-r--r-- | Emby.Server.Implementations/Library/LibraryManager.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/AggregateFolder.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 11 |
3 files changed, 10 insertions, 4 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 3b5714f8e..cca835e4f 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -1038,6 +1038,7 @@ namespace Emby.Server.Implementations.Library new Progress<double>(), new MetadataRefreshOptions(new DirectoryService(_fileSystem)), recursive: false, + allowRemoveRoot: removeRoot, cancellationToken: cancellationToken).ConfigureAwait(false); await GetUserRootFolder().RefreshMetadata(cancellationToken).ConfigureAwait(false); diff --git a/MediaBrowser.Controller/Entities/AggregateFolder.cs b/MediaBrowser.Controller/Entities/AggregateFolder.cs index 70c33a8c4..40cdd6c91 100644 --- a/MediaBrowser.Controller/Entities/AggregateFolder.cs +++ b/MediaBrowser.Controller/Entities/AggregateFolder.cs @@ -159,7 +159,7 @@ namespace MediaBrowser.Controller.Entities { ClearCache(); - await base.ValidateChildrenInternal(progress, recursive, refreshChildMetadata, false, refreshOptions, directoryService, cancellationToken) + await base.ValidateChildrenInternal(progress, recursive, refreshChildMetadata, allowRemoveRoot, refreshOptions, directoryService, cancellationToken) .ConfigureAwait(false); ClearCache(); diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 45c27fdc0..f39fa79eb 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -333,8 +333,13 @@ namespace MediaBrowser.Controller.Entities } } - private static bool IsLibraryFolderAccessible(IDirectoryService directoryService, BaseItem item) + private static bool IsLibraryFolderAccessible(IDirectoryService directoryService, BaseItem item, bool checkCollection) { + if (!checkCollection && (item is BoxSet || string.Equals(item.FileNameWithoutExtension, "collections", StringComparison.OrdinalIgnoreCase))) + { + return true; + } + // For top parents i.e. Library folders, skip the validation if it's empty or inaccessible if (item.IsTopParent && !directoryService.IsAccessible(item.ContainingFolderPath)) { @@ -347,7 +352,7 @@ namespace MediaBrowser.Controller.Entities private async Task ValidateChildrenInternal2(IProgress<double> progress, bool recursive, bool refreshChildMetadata, bool allowRemoveRoot, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService, CancellationToken cancellationToken) { - if (!IsLibraryFolderAccessible(directoryService, this)) + if (!IsLibraryFolderAccessible(directoryService, this, allowRemoveRoot)) { return; } @@ -388,7 +393,7 @@ namespace MediaBrowser.Controller.Entities foreach (var child in nonCachedChildren) { - if (!IsLibraryFolderAccessible(directoryService, child)) + if (!IsLibraryFolderAccessible(directoryService, child, allowRemoveRoot)) { continue; } |
