aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/UserViewBuilder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Entities/UserViewBuilder.cs')
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs20
1 files changed, 20 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index 5e5735d34..562ae9f62 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -50,6 +50,16 @@ namespace MediaBrowser.Controller.Entities
{
var user = query.User;
+ if (query.IncludeItemTypes != null &&
+ query.IncludeItemTypes.Length == 1 &&
+ string.Equals(query.IncludeItemTypes[0], "Playlist", StringComparison.OrdinalIgnoreCase))
+ {
+ if (!string.Equals(viewType, CollectionType.Playlists, StringComparison.OrdinalIgnoreCase))
+ {
+ return await FindPlaylists(queryParent, user, query).ConfigureAwait(false);
+ }
+ }
+
switch (viewType)
{
case CollectionType.Channels:
@@ -240,6 +250,16 @@ namespace MediaBrowser.Controller.Entities
}
}
+ private async Task<QueryResult<BaseItem>> FindPlaylists(Folder parent, User user, InternalItemsQuery query)
+ {
+ var collectionFolders = user.RootFolder.GetChildren(user, true).Select(i => i.Id).ToList();
+
+ var list = _playlistManager.GetPlaylists(user.Id.ToString("N"))
+ .Where(i => i.GetChildren(user, true).Any(media => _libraryManager.GetCollectionFolders(media).Select(c => c.Id).Any(collectionFolders.Contains)));
+
+ return GetResult(list, parent, query);
+ }
+
private int GetSpecialItemsLimit()
{
return 50;