diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index c7f36e6ac9..28337344a1 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -326,6 +326,8 @@ namespace MediaBrowser.Api.UserLibrary items = _collectionManager.CollapseItemsWithinBoxSets(items, user); } + items = ApplyPostCollectionCollapseFilters(request, items, user); + items = ApplySortOrder(request, items, user, _libraryManager); // This must be the last filter @@ -811,20 +813,6 @@ namespace MediaBrowser.Api.UserLibrary items = items.Where(f => !vals.Contains(f.LocationType.ToString(), StringComparer.OrdinalIgnoreCase)); } - if (!string.IsNullOrEmpty(request.NameStartsWithOrGreater)) - { - items = items.Where(i => string.Compare(request.NameStartsWithOrGreater, i.SortName, StringComparison.CurrentCultureIgnoreCase) < 1); - } - if (!string.IsNullOrEmpty(request.NameStartsWith)) - { - items = items.Where(i => string.Compare(request.NameStartsWith, i.SortName.Substring(0, 1), StringComparison.CurrentCultureIgnoreCase) == 0); - } - - if (!string.IsNullOrEmpty(request.NameLessThan)) - { - items = items.Where(i => string.Compare(request.NameLessThan, i.SortName, StringComparison.CurrentCultureIgnoreCase) == 1); - } - if (!string.IsNullOrEmpty(request.AlbumArtistStartsWithOrGreater)) { items = items.OfType() @@ -1231,6 +1219,25 @@ namespace MediaBrowser.Api.UserLibrary return items; } + private IEnumerable ApplyPostCollectionCollapseFilters(GetItems request, IEnumerable items, User user) + { + if (!string.IsNullOrEmpty(request.NameStartsWithOrGreater)) + { + items = items.Where(i => string.Compare(request.NameStartsWithOrGreater, i.SortName, StringComparison.CurrentCultureIgnoreCase) < 1); + } + if (!string.IsNullOrEmpty(request.NameStartsWith)) + { + items = items.Where(i => string.Compare(request.NameStartsWith, i.SortName.Substring(0, 1), StringComparison.CurrentCultureIgnoreCase) == 0); + } + + if (!string.IsNullOrEmpty(request.NameLessThan)) + { + items = items.Where(i => string.Compare(request.NameLessThan, i.SortName, StringComparison.CurrentCultureIgnoreCase) == 1); + } + + return items; + } + private bool IsYearMismatched(BaseItem item) { if (item.ProductionYear.HasValue)