support recursive played filter

This commit is contained in:
Luke Pulverenti
2014-01-15 17:19:37 -05:00
parent 98b6046f04
commit d0a5197c0a
5 changed files with 22 additions and 40 deletions

View File

@@ -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);