Browse Source

Merge pull request #6071 from BaronGreenback/DLNAFolderFixPart1

Make DLNA folders to work as expected.
Claus Vium 4 năm trước cách đây
mục cha
commit
f17d43c564

+ 22 - 2
MediaBrowser.Controller/Entities/Folder.cs

@@ -987,7 +987,13 @@ namespace MediaBrowser.Controller.Entities
             }
             else
             {
-                items = GetChildren(user, true).Where(filter);
+                // need to pass this param to the children.
+                var childQuery = new InternalItemsQuery
+                {
+                    DisplayAlbumFolders = query.DisplayAlbumFolders
+                };
+
+                items = GetChildren(user, true, childQuery).Where(filter);
             }
 
             return PostFilterAndSort(items, query, true);
@@ -1325,7 +1331,21 @@ namespace MediaBrowser.Controller.Entities
         /// </summary>
         private void AddChildren(User user, bool includeLinkedChildren, Dictionary<Guid, BaseItem> result, bool recursive, InternalItemsQuery query)
         {
-            foreach (var child in GetEligibleChildrenForRecursiveChildren(user))
+            // If Query.AlbumFolders is set, then enforce the format as per the db in that it permits sub-folders in music albums.
+            IEnumerable<BaseItem> children = null;
+            if ((query?.DisplayAlbumFolders ?? false) && (this is MusicAlbum))
+            {
+                children = Children;
+                query = null;
+            }
+
+            // If there are not sub-folders, proceed as normal.
+            if (children == null)
+            {
+                children = GetEligibleChildrenForRecursiveChildren(user);
+            }
+
+            foreach (var child in children)
             {
                 bool? isVisibleToUser = null;
 

+ 5 - 0
MediaBrowser.Controller/Entities/InternalItemsQuery.cs

@@ -265,6 +265,11 @@ namespace MediaBrowser.Controller.Entities
 
         public bool? IsDeadPerson { get; set; }
 
+        /// <summary>
+        /// Gets or sets a value indicating whether album sub-folders should be returned if they exist.
+        /// </summary>
+        public bool? DisplayAlbumFolders { get; set; }
+
         public InternalItemsQuery()
         {
             AlbumArtistIds = Array.Empty<Guid>();