diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-15 17:19:37 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-15 17:19:37 -0500 |
| commit | d0a5197c0aa9d44413366258b0ff81512ba2cba4 (patch) | |
| tree | a810ab454ebe9ef86051c59bf04a88b25966bd0f /MediaBrowser.Api/UserLibrary | |
| parent | 98b6046f04b2732315b882cf65a1f2e3cbea65ab (diff) | |
support recursive played filter
Diffstat (limited to 'MediaBrowser.Api/UserLibrary')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 17 |
2 files changed, 7 insertions, 24 deletions
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index dec35100d1..922260c07f 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -137,24 +137,14 @@ namespace MediaBrowser.Api.UserLibrary { var libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList(); - items = items.Where(i => GetLibraryItems(i, libraryItems).All(l => - { - var userdata = UserDataRepository.GetUserData(user.Id, l.GetUserDataKey()); - - return userdata != null && userdata.Played; - })); + items = items.Where(i => GetLibraryItems(i, libraryItems).All(l => l.IsPlayed(user))); } if (filters.Contains(ItemFilter.IsUnplayed)) { var libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList(); - items = items.Where(i => GetLibraryItems(i, libraryItems).All(l => - { - var userdata = UserDataRepository.GetUserData(user.Id, l.GetUserDataKey()); - - return userdata == null || !userdata.Played; - })); + items = items.Where(i => GetLibraryItems(i, libraryItems).All(l => !l.IsPlayed(user))); } return items; diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 202ac293f9..22149df861 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -386,6 +386,9 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>IEnumerable{BaseItem}.</returns> internal static IEnumerable<BaseItem> ApplyFilter(IEnumerable<BaseItem> items, ItemFilter filter, User user, IUserDataManager repository) { + // Avoid implicitly captured closure + var currentUser = user; + switch (filter) { case ItemFilter.IsFavoriteOrLikes: @@ -440,20 +443,10 @@ namespace MediaBrowser.Api.UserLibrary }); case ItemFilter.IsPlayed: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata != null && userdata.Played; - }); + return items.Where(item => item.IsPlayed(currentUser)); case ItemFilter.IsUnplayed: - return items.Where(item => - { - var userdata = repository.GetUserData(user.Id, item.GetUserDataKey()); - - return userdata == null || !userdata.Played; - }); + return items.Where(item => !item.IsPlayed(currentUser)); case ItemFilter.IsFolder: return items.Where(item => item.IsFolder); |
