aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-15 17:19:37 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-15 17:19:37 -0500
commitd0a5197c0aa9d44413366258b0ff81512ba2cba4 (patch)
treea810ab454ebe9ef86051c59bf04a88b25966bd0f /MediaBrowser.Api/UserLibrary
parent98b6046f04b2732315b882cf65a1f2e3cbea65ab (diff)
support recursive played filter
Diffstat (limited to 'MediaBrowser.Api/UserLibrary')
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs14
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs17
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);