Enable child items to be returned if a musicAlbum

This commit is contained in:
BaronGreenback 2021-05-17 23:34:50 +01:00
parent 557a2ad715
commit 48bb338352
2 changed files with 27 additions and 3 deletions

View File

@ -939,7 +939,13 @@ namespace MediaBrowser.Controller.Entities
} }
else 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); return PostFilterAndSort(items, query, true);
@ -1275,10 +1281,23 @@ namespace MediaBrowser.Controller.Entities
/// <summary> /// <summary>
/// Adds the children to list. /// Adds the children to list.
/// </summary> /// </summary>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
private void AddChildren(User user, bool includeLinkedChildren, Dictionary<Guid, BaseItem> result, bool recursive, InternalItemsQuery query) 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; bool? isVisibleToUser = null;

View File

@ -265,6 +265,11 @@ namespace MediaBrowser.Controller.Entities
public bool? IsDeadPerson { get; set; } 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() public InternalItemsQuery()
{ {
AlbumArtistIds = Array.Empty<Guid>(); AlbumArtistIds = Array.Empty<Guid>();