aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-02 15:25:16 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-02 15:25:16 -0400
commite2562879d86aafc1063e37bfd353c22309e8e237 (patch)
treed5d7479281f85fc47d24d8c95a2ce29a3a146d8b /MediaBrowser.Api/UserLibrary
parentb4dd8a210629bc74445f106e2379b986af9520c5 (diff)
Moved userdata to user manager to resolve concurrency issues. must delete userdata and displaypreferences db files.
Diffstat (limited to 'MediaBrowser.Api/UserLibrary')
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs17
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs16
2 files changed, 18 insertions, 15 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index e977c2c551..a74516fa29 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -241,12 +241,15 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>IEnumerable{BaseItem}.</returns>
private IEnumerable<BaseItem> ApplyFilter(IEnumerable<BaseItem> items, ItemFilter filter, User user)
{
+ // Avoids implicitly captured closure
+ var currentUser = user;
+
switch (filter)
{
case ItemFilter.Likes:
return items.Where(item =>
{
- var userdata = item.GetUserData(user, false);
+ var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
return userdata != null && userdata.Likes.HasValue && userdata.Likes.Value;
});
@@ -254,7 +257,7 @@ namespace MediaBrowser.Api.UserLibrary
case ItemFilter.Dislikes:
return items.Where(item =>
{
- var userdata = item.GetUserData(user, false);
+ var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
return userdata != null && userdata.Likes.HasValue && !userdata.Likes.Value;
});
@@ -262,18 +265,18 @@ namespace MediaBrowser.Api.UserLibrary
case ItemFilter.IsFavorite:
return items.Where(item =>
{
- var userdata = item.GetUserData(user, false);
+ var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
return userdata != null && userdata.IsFavorite;
});
case ItemFilter.IsRecentlyAdded:
- return items.Where(item => item.IsRecentlyAdded(user));
+ return items.Where(item => item.IsRecentlyAdded(currentUser));
case ItemFilter.IsResumable:
return items.Where(item =>
{
- var userdata = item.GetUserData(user, false);
+ var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
return userdata != null && userdata.PlaybackPositionTicks > 0;
});
@@ -281,7 +284,7 @@ namespace MediaBrowser.Api.UserLibrary
case ItemFilter.IsPlayed:
return items.Where(item =>
{
- var userdata = item.GetUserData(user, false);
+ var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
return userdata != null && userdata.PlayCount > 0;
});
@@ -289,7 +292,7 @@ namespace MediaBrowser.Api.UserLibrary
case ItemFilter.IsUnplayed:
return items.Where(item =>
{
- var userdata = item.GetUserData(user, false);
+ var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
return userdata == null || userdata.PlayCount == 0;
});
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index 7afeef9334..d1f963a9ee 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -503,12 +503,12 @@ namespace MediaBrowser.Api.UserLibrary
var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id);
// Get the user data for this item
- var data = item.GetUserData(user, true);
+ var data = _userManager.GetUserData(user.Id, item.UserDataId).Result;
// Set favorite status
data.IsFavorite = true;
- var task = _userManager.SaveUserDataForItem(user, item, data);
+ var task = _userManager.SaveUserData(user.Id, item.UserDataId, data, CancellationToken.None);
Task.WaitAll(task);
}
@@ -524,12 +524,12 @@ namespace MediaBrowser.Api.UserLibrary
var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id);
// Get the user data for this item
- var data = item.GetUserData(user, true);
+ var data = _userManager.GetUserData(user.Id, item.UserDataId).Result;
// Set favorite status
data.IsFavorite = false;
- var task = _userManager.SaveUserDataForItem(user, item, data);
+ var task = _userManager.SaveUserData(user.Id, item.UserDataId, data, CancellationToken.None);
Task.WaitAll(task);
}
@@ -545,11 +545,11 @@ namespace MediaBrowser.Api.UserLibrary
var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id);
// Get the user data for this item
- var data = item.GetUserData(user, true);
+ var data = _userManager.GetUserData(user.Id, item.UserDataId).Result;
data.Rating = null;
- var task = _userManager.SaveUserDataForItem(user, item, data);
+ var task = _userManager.SaveUserData(user.Id, item.UserDataId, data, CancellationToken.None);
Task.WaitAll(task);
}
@@ -565,11 +565,11 @@ namespace MediaBrowser.Api.UserLibrary
var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id);
// Get the user data for this item
- var data = item.GetUserData(user, true);
+ var data = _userManager.GetUserData(user.Id, item.UserDataId).Result;
data.Likes = request.Likes;
- var task = _userManager.SaveUserDataForItem(user, item, data);
+ var task = _userManager.SaveUserData(user.Id, item.UserDataId, data, CancellationToken.None);
Task.WaitAll(task);
}