diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-02 15:25:16 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-02 15:25:16 -0400 |
| commit | e2562879d86aafc1063e37bfd353c22309e8e237 (patch) | |
| tree | d5d7479281f85fc47d24d8c95a2ce29a3a146d8b /MediaBrowser.Api/UserLibrary | |
| parent | b4dd8a210629bc74445f106e2379b986af9520c5 (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.cs | 17 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 16 |
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); } |
