aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Session/SessionManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Session/SessionManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs19
1 files changed, 13 insertions, 6 deletions
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 308f46c23..a9488190c 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -904,9 +904,8 @@ namespace MediaBrowser.Server.Implementations.Session
_libraryManager.RootFolder.GetRecursiveChildren(i => !i.IsFolder && itemFilter(i)) :
user.RootFolder.GetRecursiveChildren(user, i => !i.IsFolder && itemFilter(i));
- items = items.OrderBy(i => i.SortName);
-
- return items;
+ return FilterToSingleMediaType(items)
+ .OrderBy(i => i.SortName);
}
if (item.IsFolder)
@@ -917,14 +916,22 @@ namespace MediaBrowser.Server.Implementations.Session
folder.GetRecursiveChildren(i => !i.IsFolder) :
folder.GetRecursiveChildren(user, i => !i.IsFolder);
- items = items.OrderBy(i => i.SortName);
-
- return items;
+ return FilterToSingleMediaType(items)
+ .OrderBy(i => i.SortName);
}
return new[] { item };
}
+ private IEnumerable<BaseItem> FilterToSingleMediaType(IEnumerable<BaseItem> items)
+ {
+ return items
+ .Where(i => !string.IsNullOrWhiteSpace(i.MediaType))
+ .ToLookup(i => i.MediaType, StringComparer.OrdinalIgnoreCase)
+ .OrderByDescending(i => i.Count())
+ .FirstOrDefault();
+ }
+
private IEnumerable<BaseItem> TranslateItemForInstantMix(string id, User user)
{
var item = _libraryManager.GetItemById(id);