diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-08-27 13:34:55 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-08-27 13:34:55 -0400 |
| commit | f3ee129bd9e88e8768221ba176bc8356f9b240e3 (patch) | |
| tree | 72dc082f77629e8d70f764d175433b40ac4c02d0 /MediaBrowser.Api/UserLibrary | |
| parent | 4f8684a16b1102056bd2b527dcbd585b78dd8000 (diff) | |
| parent | fa6bec94b59cf850246c5d0757b9279d080643d7 (diff) | |
Merge pull request #2847 from MediaBrowser/beta
Beta
Diffstat (limited to 'MediaBrowser.Api/UserLibrary')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ArtistsService.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | 28 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/GameGenresService.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/GenresService.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/MusicGenresService.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/PersonsService.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/StudiosService.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 53 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/UserViewsService.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/YearsService.cs | 6 |
12 files changed, 76 insertions, 83 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ArtistsService.cs b/MediaBrowser.Api/UserLibrary/ArtistsService.cs index 7c1519e9fd..4018759d99 100644 --- a/MediaBrowser.Api/UserLibrary/ArtistsService.cs +++ b/MediaBrowser.Api/UserLibrary/ArtistsService.cs @@ -132,7 +132,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> /// <param name="items">The items.</param> /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> - protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items) + protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items) { throw new NotImplementedException(); } diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index 30e64d89d1..fca842289b 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -88,7 +88,7 @@ namespace MediaBrowser.Api.UserLibrary return null; } - protected ItemsResult GetResultSlim(GetItemsByName request) + protected QueryResult<BaseItemDto> GetResultSlim(GetItemsByName request) { var dtoOptions = GetDtoOptions(AuthorizationContext, request); @@ -209,7 +209,7 @@ namespace MediaBrowser.Api.UserLibrary return dto; }); - return new ItemsResult + return new QueryResult<BaseItemDto> { Items = dtos.ToArray(result.Items.Length), TotalRecordCount = result.TotalRecordCount @@ -240,7 +240,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <param name="request">The request.</param> /// <returns>Task{ItemsResult}.</returns> - protected ItemsResult GetResult(GetItemsByName request) + protected QueryResult<BaseItemDto> GetResult(GetItemsByName request) { var dtoOptions = GetDtoOptions(AuthorizationContext, request); @@ -257,7 +257,7 @@ namespace MediaBrowser.Api.UserLibrary parentItem = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.RootFolder : LibraryManager.GetItemById(request.ParentId); } - IEnumerable<BaseItem> items; + IList<BaseItem> items; var excludeItemTypes = request.GetExcludeItemTypes(); var includeItemTypes = request.GetIncludeItemTypes(); @@ -280,19 +280,19 @@ namespace MediaBrowser.Api.UserLibrary if (!string.IsNullOrWhiteSpace(request.UserId)) { items = request.Recursive ? - folder.GetRecursiveChildren(user, query) : - folder.GetChildren(user, true).Where(filter); + folder.GetRecursiveChildren(user, query).ToList() : + folder.GetChildren(user, true).Where(filter).ToList(); } else { items = request.Recursive ? folder.GetRecursiveChildren(filter) : - folder.Children.Where(filter); + folder.Children.Where(filter).ToList(); } } else { - items = new[] { parentItem }.Where(filter); + items = new[] { parentItem }.Where(filter).ToList(); } var extractedItems = GetAllItems(request, items); @@ -305,7 +305,7 @@ namespace MediaBrowser.Api.UserLibrary IEnumerable<BaseItem> ibnItems = ibnItemsArray; - var result = new ItemsResult + var result = new QueryResult<BaseItemDto> { TotalRecordCount = ibnItemsArray.Count }; @@ -357,13 +357,13 @@ namespace MediaBrowser.Api.UserLibrary items = items.Where(i => string.Compare(request.NameLessThan, i.SortName, StringComparison.CurrentCultureIgnoreCase) == 1); } - var imageTypes = request.GetImageTypes().ToList(); - if (imageTypes.Count > 0) + var imageTypes = request.GetImageTypes(); + if (imageTypes.Length > 0) { items = items.Where(item => imageTypes.Any(item.HasImage)); } - var filters = request.GetFilters().ToList(); + var filters = request.GetFilters(); if (filters.Contains(ItemFilter.Dislikes)) { @@ -500,13 +500,13 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> /// <param name="items">The items.</param> /// <returns>IEnumerable{Task{`0}}.</returns> - protected abstract IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items); + protected abstract IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items); } /// <summary> /// Class GetItemsByName /// </summary> - public class GetItemsByName : BaseItemsRequest, IReturn<ItemsResult> + public class GetItemsByName : BaseItemsRequest, IReturn<QueryResult<BaseItemDto>> { public GetItemsByName() { diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs index a9c5ae700d..66aa35de9c 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs @@ -435,7 +435,7 @@ namespace MediaBrowser.Api.UserLibrary /// Gets the filters. /// </summary> /// <returns>IEnumerable{ItemFilter}.</returns> - public IEnumerable<ItemFilter> GetFilters() + public ItemFilter[] GetFilters() { var val = Filters; @@ -444,7 +444,7 @@ namespace MediaBrowser.Api.UserLibrary return new ItemFilter[] { }; } - return val.Split(',').Select(v => (ItemFilter)Enum.Parse(typeof(ItemFilter), v, true)); + return val.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(v => (ItemFilter)Enum.Parse(typeof(ItemFilter), v, true)).ToArray(); } /// <summary> diff --git a/MediaBrowser.Api/UserLibrary/GameGenresService.cs b/MediaBrowser.Api/UserLibrary/GameGenresService.cs index 56730c1b20..0b2ca4daf9 100644 --- a/MediaBrowser.Api/UserLibrary/GameGenresService.cs +++ b/MediaBrowser.Api/UserLibrary/GameGenresService.cs @@ -93,7 +93,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> /// <param name="items">The items.</param> /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> - protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items) + protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items) { throw new NotImplementedException(); } diff --git a/MediaBrowser.Api/UserLibrary/GenresService.cs b/MediaBrowser.Api/UserLibrary/GenresService.cs index fc387e5e39..d913f52d96 100644 --- a/MediaBrowser.Api/UserLibrary/GenresService.cs +++ b/MediaBrowser.Api/UserLibrary/GenresService.cs @@ -115,7 +115,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> /// <param name="items">The items.</param> /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> - protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items) + protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items) { throw new NotImplementedException(); } diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index f3d7772fca..9dd5aa5651 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -10,6 +10,7 @@ using System.Globalization; using System.Linq; using System.Threading.Tasks; using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Globalization; using MediaBrowser.Model.Services; using MediaBrowser.Model.Extensions; @@ -21,7 +22,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> [Route("/Items", "GET", Summary = "Gets items based on a query.")] [Route("/Users/{UserId}/Items", "GET", Summary = "Gets items based on a query.")] - public class GetItems : BaseItemsRequest, IReturn<ItemsResult> + public class GetItems : BaseItemsRequest, IReturn<QueryResult<BaseItemDto>> { } @@ -100,7 +101,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <param name="request">The request.</param> /// <returns>Task{ItemsResult}.</returns> - private async Task<ItemsResult> GetItems(GetItems request) + private async Task<QueryResult<BaseItemDto>> GetItems(GetItems request) { var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; @@ -125,10 +126,10 @@ namespace MediaBrowser.Api.UserLibrary throw new InvalidOperationException("GetBaseItemDtos returned null"); } - return new ItemsResult + return new QueryResult<BaseItemDto> { TotalRecordCount = result.TotalRecordCount, - Items = dtoList.ToArray(dtoList.Count) + Items = dtoList }; } @@ -180,9 +181,7 @@ namespace MediaBrowser.Api.UserLibrary return folder.GetItems(GetItemsQuery(request, dtoOptions, user)); } - IEnumerable<BaseItem> items = folder.GetChildren(user, true); - - var itemsArray = items.ToArray(); + var itemsArray = folder.GetChildren(user, true).ToArray(); return new QueryResult<BaseItem> { @@ -332,13 +331,11 @@ namespace MediaBrowser.Api.UserLibrary if (!string.IsNullOrEmpty(request.LocationTypes)) { var requestedLocationTypes = - request.LocationTypes.Split(',') - .Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)) - .ToList(); + request.LocationTypes.Split(','); - if (requestedLocationTypes.Count > 0 && requestedLocationTypes.Count < 4) + if (requestedLocationTypes.Length > 0 && requestedLocationTypes.Length < 4) { - query.IsVirtualItem = requestedLocationTypes.Contains(LocationType.Virtual); + query.IsVirtualItem = requestedLocationTypes.Contains(LocationType.Virtual.ToString()); } } diff --git a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs index d1d4aa634b..36dc773d4d 100644 --- a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs +++ b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs @@ -94,7 +94,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> /// <param name="items">The items.</param> /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> - protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items) + protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items) { throw new NotImplementedException(); } diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs index 21f416025e..9417447d84 100644 --- a/MediaBrowser.Api/UserLibrary/PersonsService.cs +++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs @@ -96,15 +96,13 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> /// <param name="items">The items.</param> /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> - protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items) + protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items) { var inputPersonTypes = ((GetPersons)request).PersonTypes; var personTypes = string.IsNullOrEmpty(inputPersonTypes) ? new string[] { } : inputPersonTypes.Split(','); - var itemsList = items.ToList(); - // Either get all people, or all people filtered by a specific person type - var allPeople = GetAllPeople(itemsList, personTypes); + var allPeople = GetAllPeople(items, personTypes); return allPeople .Select(i => i.Name) @@ -132,13 +130,13 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="itemsList">The items list.</param> /// <param name="personTypes">The person types.</param> /// <returns>IEnumerable{PersonInfo}.</returns> - private IEnumerable<PersonInfo> GetAllPeople(IEnumerable<BaseItem> itemsList, IEnumerable<string> personTypes) + private IEnumerable<PersonInfo> GetAllPeople(IList<BaseItem> itemsList, string[] personTypes) { - var allIds = itemsList.Select(i => i.Id).ToList(); + var allIds = itemsList.Select(i => i.Id).ToArray(); var allPeople = LibraryManager.GetPeople(new InternalPeopleQuery { - PersonTypes = personTypes.ToList() + PersonTypes = personTypes }); return allPeople.Where(i => allIds.Contains(i.ItemId)).OrderBy(p => p.SortOrder ?? int.MaxValue).ThenBy(p => p.Type); diff --git a/MediaBrowser.Api/UserLibrary/StudiosService.cs b/MediaBrowser.Api/UserLibrary/StudiosService.cs index 7ac1264e8f..f10cccbb13 100644 --- a/MediaBrowser.Api/UserLibrary/StudiosService.cs +++ b/MediaBrowser.Api/UserLibrary/StudiosService.cs @@ -103,11 +103,9 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> /// <param name="items">The items.</param> /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> - protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items) + protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items) { - var itemsList = items.Where(i => i.Studios != null).ToList(); - - return itemsList + return items .SelectMany(i => i.Studios) .DistinctNames() .Select(name => LibraryManager.GetStudio(name)); diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index ee11626870..1bbc740c01 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -12,11 +12,9 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Services; -using MediaBrowser.Model.Extensions; namespace MediaBrowser.Api.UserLibrary { @@ -59,7 +57,7 @@ namespace MediaBrowser.Api.UserLibrary /// Class GetIntros /// </summary> [Route("/Users/{UserId}/Items/{Id}/Intros", "GET", Summary = "Gets intros to play before the main media item plays")] - public class GetIntros : IReturn<ItemsResult> + public class GetIntros : IReturn<QueryResult<BaseItemDto>> { /// <summary> /// Gets or sets the user id. @@ -171,7 +169,7 @@ namespace MediaBrowser.Api.UserLibrary /// Class GetLocalTrailers /// </summary> [Route("/Users/{UserId}/Items/{Id}/LocalTrailers", "GET", Summary = "Gets local trailers for an item")] - public class GetLocalTrailers : IReturn<List<BaseItemDto>> + public class GetLocalTrailers : IReturn<BaseItemDto[]> { /// <summary> /// Gets or sets the user id. @@ -192,7 +190,7 @@ namespace MediaBrowser.Api.UserLibrary /// Class GetSpecialFeatures /// </summary> [Route("/Users/{UserId}/Items/{Id}/SpecialFeatures", "GET", Summary = "Gets special features for an item")] - public class GetSpecialFeatures : IReturn<List<BaseItemDto>> + public class GetSpecialFeatures : IReturn<BaseItemDto[]> { /// <summary> /// Gets or sets the user id. @@ -210,7 +208,7 @@ namespace MediaBrowser.Api.UserLibrary } [Route("/Users/{UserId}/Items/Latest", "GET", Summary = "Gets latest media")] - public class GetLatestMedia : IReturn<List<BaseItemDto>>, IHasDtoOptions + public class GetLatestMedia : IReturn<BaseItemDto[]>, IHasDtoOptions { /// <summary> /// Gets or sets the user id. @@ -338,10 +336,10 @@ namespace MediaBrowser.Api.UserLibrary return dto; }); - return ToOptimizedResult(dtos.ToList()); + return ToOptimizedResult(dtos.ToArray()); } - private List<BaseItemDto> GetAsync(GetSpecialFeatures request) + private BaseItemDto[] GetAsync(GetSpecialFeatures request) { var user = _userManager.GetUserById(request.UserId); @@ -364,7 +362,7 @@ namespace MediaBrowser.Api.UserLibrary .Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0) .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, currentUser)); - return dtos.ToList(); + return dtos.ToArray(); } var movie = item as IHasSpecialFeatures; @@ -379,10 +377,10 @@ namespace MediaBrowser.Api.UserLibrary .OrderBy(i => i.SortName) .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item)); - return dtos.ToList(); + return dtos.ToArray(); } - return new List<BaseItemDto>(); + return new BaseItemDto[] { }; } /// <summary> @@ -396,19 +394,24 @@ namespace MediaBrowser.Api.UserLibrary var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : _libraryManager.GetItemById(request.Id); - var trailerIds = new List<Guid>(); + List<Guid> trailerIds = null; var hasTrailers = item as IHasTrailers; if (hasTrailers != null) { trailerIds = hasTrailers.GetTrailerIds(); } + else + { + trailerIds = new List<Guid>(); + } var dtoOptions = GetDtoOptions(_authContext, request); var dtos = trailerIds .Select(_libraryManager.GetItemById) - .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item)); + .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item)) + .ToArray(); return ToOptimizedSerializedResultUsingCache(dtos); } @@ -489,7 +492,7 @@ namespace MediaBrowser.Api.UserLibrary var dtos = items.Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user)).ToArray(); - var result = new ItemsResult + var result = new QueryResult<BaseItemDto> { Items = dtos, TotalRecordCount = dtos.Length @@ -502,9 +505,9 @@ namespace MediaBrowser.Api.UserLibrary /// Posts the specified request. /// </summary> /// <param name="request">The request.</param> - public async Task<object> Post(MarkFavoriteItem request) + public object Post(MarkFavoriteItem request) { - var dto = await MarkFavorite(request.UserId, request.Id, true).ConfigureAwait(false); + var dto = MarkFavorite(request.UserId, request.Id, true); return ToOptimizedResult(dto); } @@ -515,7 +518,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> public object Delete(UnmarkFavoriteItem request) { - var dto = MarkFavorite(request.UserId, request.Id, false).Result; + var dto = MarkFavorite(request.UserId, request.Id, false); return ToOptimizedResult(dto); } @@ -526,8 +529,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="userId">The user id.</param> /// <param name="itemId">The item id.</param> /// <param name="isFavorite">if set to <c>true</c> [is favorite].</param> - /// <returns>Task{UserItemDataDto}.</returns> - private async Task<UserItemDataDto> MarkFavorite(string userId, string itemId, bool isFavorite) + private UserItemDataDto MarkFavorite(string userId, string itemId, bool isFavorite) { var user = _userManager.GetUserById(userId); @@ -539,7 +541,7 @@ namespace MediaBrowser.Api.UserLibrary // Set favorite status data.IsFavorite = isFavorite; - await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false); + _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None); return _userDataRepository.GetUserDataDto(item, user); } @@ -550,7 +552,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> public object Delete(DeleteUserItemRating request) { - var dto = UpdateUserItemRating(request.UserId, request.Id, null).Result; + var dto = UpdateUserItemRating(request.UserId, request.Id, null); return ToOptimizedResult(dto); } @@ -559,9 +561,9 @@ namespace MediaBrowser.Api.UserLibrary /// Posts the specified request. /// </summary> /// <param name="request">The request.</param> - public async Task<object> Post(UpdateUserItemRating request) + public object Post(UpdateUserItemRating request) { - var dto = await UpdateUserItemRating(request.UserId, request.Id, request.Likes).ConfigureAwait(false); + var dto = UpdateUserItemRating(request.UserId, request.Id, request.Likes); return ToOptimizedResult(dto); } @@ -572,8 +574,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="userId">The user id.</param> /// <param name="itemId">The item id.</param> /// <param name="likes">if set to <c>true</c> [likes].</param> - /// <returns>Task{UserItemDataDto}.</returns> - private async Task<UserItemDataDto> UpdateUserItemRating(string userId, string itemId, bool? likes) + private UserItemDataDto UpdateUserItemRating(string userId, string itemId, bool? likes) { var user = _userManager.GetUserById(userId); @@ -584,7 +585,7 @@ namespace MediaBrowser.Api.UserLibrary data.Likes = likes; - await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false); + _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None); return _userDataRepository.GetUserDataDto(item, user); } diff --git a/MediaBrowser.Api/UserLibrary/UserViewsService.cs b/MediaBrowser.Api/UserLibrary/UserViewsService.cs index 3ed5166a4b..096157e47f 100644 --- a/MediaBrowser.Api/UserLibrary/UserViewsService.cs +++ b/MediaBrowser.Api/UserLibrary/UserViewsService.cs @@ -12,6 +12,7 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Services; +using MediaBrowser.Model.Extensions; namespace MediaBrowser.Api.UserLibrary { @@ -32,7 +33,7 @@ namespace MediaBrowser.Api.UserLibrary } [Route("/Users/{UserId}/GroupingOptions", "GET")] - public class GetGroupingOptions : IReturn<List<SpecialViewOption>> + public class GetGroupingOptions : IReturn<SpecialViewOption[]> { /// <summary> /// Gets or sets the user id. @@ -84,10 +85,13 @@ namespace MediaBrowser.Api.UserLibrary var folders = await _userViewManager.GetUserViews(query, CancellationToken.None).ConfigureAwait(false); var dtoOptions = GetDtoOptions(_authContext, request); - dtoOptions.Fields.Add(ItemFields.PrimaryImageAspectRatio); - dtoOptions.Fields.Add(ItemFields.DisplayPreferencesId); - dtoOptions.Fields.Remove(ItemFields.SyncInfo); - dtoOptions.Fields.Remove(ItemFields.BasicSyncInfo); + var fields = dtoOptions.Fields.ToList(); + + fields.Add(ItemFields.PrimaryImageAspectRatio); + fields.Add(ItemFields.DisplayPreferencesId); + fields.Remove(ItemFields.SyncInfo); + fields.Remove(ItemFields.BasicSyncInfo); + dtoOptions.Fields = fields.ToArray(fields.Count); var user = _userManager.GetUserById(request.UserId); @@ -107,13 +111,10 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(request.UserId); - var views = user.RootFolder + var list = user.RootFolder .GetChildren(user, true) .OfType<Folder>() .Where(UserView.IsEligibleForGrouping) - .ToList(); - - var list = views .Select(i => new SpecialViewOption { Name = i.Name, @@ -121,7 +122,7 @@ namespace MediaBrowser.Api.UserLibrary }) .OrderBy(i => i.Name) - .ToList(); + .ToArray(); return ToOptimizedResult(list); } diff --git a/MediaBrowser.Api/UserLibrary/YearsService.cs b/MediaBrowser.Api/UserLibrary/YearsService.cs index 1059b72cb8..db622a9b34 100644 --- a/MediaBrowser.Api/UserLibrary/YearsService.cs +++ b/MediaBrowser.Api/UserLibrary/YearsService.cs @@ -96,11 +96,9 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> /// <param name="items">The items.</param> /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> - protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items) + protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items) { - var itemsList = items.Where(i => i.ProductionYear != null).ToList(); - - return itemsList + return items .Select(i => i.ProductionYear ?? 0) .Where(i => i > 0) .Distinct() |
