aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Library/UserViewManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/Library/UserViewManager.cs')
-rw-r--r--Emby.Server.Implementations/Library/UserViewManager.cs66
1 files changed, 51 insertions, 15 deletions
diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs
index a6ed84f29..8c9377291 100644
--- a/Emby.Server.Implementations/Library/UserViewManager.cs
+++ b/Emby.Server.Implementations/Library/UserViewManager.cs
@@ -15,6 +15,7 @@ using System.Threading.Tasks;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Model.Globalization;
+using MediaBrowser.Model.Extensions;
namespace Emby.Server.Implementations.Library
{
@@ -38,7 +39,7 @@ namespace Emby.Server.Implementations.Library
_config = config;
}
- public async Task<IEnumerable<Folder>> GetUserViews(UserViewQuery query, CancellationToken cancellationToken)
+ public async Task<Folder[]> GetUserViews(UserViewQuery query, CancellationToken cancellationToken)
{
var user = _userManager.GetUserById(query.UserId);
@@ -67,7 +68,7 @@ namespace Emby.Server.Implementations.Library
if (UserView.IsUserSpecific(folder))
{
- list.Add(await _libraryManager.GetNamedView(user, folder.Name, folder.Id.ToString("N"), folderViewType, null, cancellationToken).ConfigureAwait(false));
+ list.Add(_libraryManager.GetNamedView(user, folder.Name, folder.Id.ToString("N"), folderViewType, null, cancellationToken));
continue;
}
@@ -79,7 +80,7 @@ namespace Emby.Server.Implementations.Library
if (query.PresetViews.Contains(folderViewType ?? string.Empty, StringComparer.OrdinalIgnoreCase))
{
- list.Add(await GetUserView(folder, folderViewType, string.Empty, cancellationToken).ConfigureAwait(false));
+ list.Add(GetUserView(folder, folderViewType, string.Empty, cancellationToken));
}
else
{
@@ -94,7 +95,7 @@ namespace Emby.Server.Implementations.Library
if (parents.Count > 0)
{
- list.Add(await GetUserView(parents, viewType, string.Empty, user, query.PresetViews, cancellationToken).ConfigureAwait(false));
+ list.Add(GetUserView(parents, viewType, string.Empty, user, query.PresetViews, cancellationToken));
}
}
@@ -113,7 +114,7 @@ namespace Emby.Server.Implementations.Library
}, cancellationToken).ConfigureAwait(false);
var channels = channelResult.Items;
-
+
if (_config.Configuration.EnableChannelView && channels.Length > 0)
{
list.Add(await _channelManager.GetInternalChannelFolder(cancellationToken).ConfigureAwait(false));
@@ -153,7 +154,8 @@ namespace Emby.Server.Implementations.Library
return index == -1 ? int.MaxValue : index;
})
.ThenBy(sorted.IndexOf)
- .ThenBy(i => i.SortName);
+ .ThenBy(i => i.SortName)
+ .ToArray();
}
public Task<UserView> GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken)
@@ -170,7 +172,7 @@ namespace Emby.Server.Implementations.Library
return GetUserSubView(name, parentId, type, sortName, cancellationToken);
}
- private async Task<Folder> GetUserView(List<ICollectionFolder> parents, string viewType, string sortName, User user, string[] presetViews, CancellationToken cancellationToken)
+ private Folder GetUserView(List<ICollectionFolder> parents, string viewType, string sortName, User user, string[] presetViews, CancellationToken cancellationToken)
{
if (parents.Count == 1 && parents.All(i => string.Equals(i.CollectionType, viewType, StringComparison.OrdinalIgnoreCase)))
{
@@ -179,14 +181,14 @@ namespace Emby.Server.Implementations.Library
return (Folder)parents[0];
}
- return await GetUserView((Folder)parents[0], viewType, string.Empty, cancellationToken).ConfigureAwait(false);
+ return GetUserView((Folder)parents[0], viewType, string.Empty, cancellationToken);
}
var name = _localizationManager.GetLocalizedString("ViewType" + viewType);
- return await _libraryManager.GetNamedView(user, name, viewType, sortName, cancellationToken).ConfigureAwait(false);
+ return _libraryManager.GetNamedView(user, name, viewType, sortName, cancellationToken);
}
- public Task<UserView> GetUserView(Folder parent, string viewType, string sortName, CancellationToken cancellationToken)
+ public UserView GetUserView(Folder parent, string viewType, string sortName, CancellationToken cancellationToken)
{
return _libraryManager.GetShadowView(parent, viewType, sortName, cancellationToken);
}
@@ -231,7 +233,7 @@ namespace Emby.Server.Implementations.Library
return list;
}
- private IEnumerable<BaseItem> GetItemsForLatestItems(User user, LatestItemsQuery request, DtoOptions options)
+ private List<BaseItem> GetItemsForLatestItems(User user, LatestItemsQuery request, DtoOptions options)
{
var parentId = request.ParentId;
@@ -269,7 +271,41 @@ namespace Emby.Server.Implementations.Library
return new List<BaseItem>();
}
- var excludeItemTypes = includeItemTypes.Length == 0 ? new[]
+ var mediaTypes = new List<string>();
+
+ if (includeItemTypes.Length == 0)
+ {
+ foreach (var parent in parents.OfType<ICollectionFolder>())
+ {
+ switch (parent.CollectionType)
+ {
+ case CollectionType.Books:
+ mediaTypes.Add(MediaType.Book);
+ break;
+ case CollectionType.Games:
+ mediaTypes.Add(MediaType.Game);
+ break;
+ case CollectionType.Music:
+ mediaTypes.Add(MediaType.Audio);
+ break;
+ case CollectionType.Photos:
+ mediaTypes.Add(MediaType.Photo);
+ mediaTypes.Add(MediaType.Video);
+ break;
+ case CollectionType.HomeVideos:
+ mediaTypes.Add(MediaType.Photo);
+ mediaTypes.Add(MediaType.Video);
+ break;
+ default:
+ mediaTypes.Add(MediaType.Video);
+ break;
+ }
+ }
+
+ mediaTypes = mediaTypes.Distinct().ToList();
+ }
+
+ var excludeItemTypes = includeItemTypes.Length == 0 && mediaTypes.Count == 0 ? new[]
{
typeof(Person).Name,
typeof(Studio).Name,
@@ -283,14 +319,14 @@ namespace Emby.Server.Implementations.Library
var query = new InternalItemsQuery(user)
{
IncludeItemTypes = includeItemTypes,
- SortOrder = SortOrder.Descending,
- SortBy = new[] { ItemSortBy.DateCreated },
+ OrderBy = new[] { new Tuple<string, SortOrder>(ItemSortBy.DateCreated, SortOrder.Descending) },
IsFolder = includeItemTypes.Length == 0 ? false : (bool?)null,
ExcludeItemTypes = excludeItemTypes,
IsVirtualItem = false,
Limit = limit * 5,
IsPlayed = isPlayed,
- DtoOptions = options
+ DtoOptions = options,
+ MediaTypes = mediaTypes.ToArray(mediaTypes.Count)
};
if (parents.Count == 0)