From 9427eb083f7d56ff4c429779de79f716d8bfd88a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 22 Aug 2013 17:56:19 -0400 Subject: return newly updated user data after modifications --- MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 50 ++++++++++++++++------ 1 file changed, 38 insertions(+), 12 deletions(-) (limited to 'MediaBrowser.Api/UserLibrary/UserLibraryService.cs') diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index 5c2e6c183..7257f0dae 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -387,7 +387,7 @@ namespace MediaBrowser.Api.UserLibrary /// System.Object. public object Get(GetSpecialFeatures request) { - var result = GetAsync(request); + var result = GetAsync(request).Result; return ToOptimizedResult(result); } @@ -420,7 +420,7 @@ namespace MediaBrowser.Api.UserLibrary /// System.Object. public object Get(GetLocalTrailers request) { - var result = GetAsync(request); + var result = GetAsync(request).Result; return ToOptimizedResult(result); } @@ -506,7 +506,7 @@ namespace MediaBrowser.Api.UserLibrary /// Posts the specified request. /// /// The request. - public void Post(MarkFavoriteItem request) + public object Post(MarkFavoriteItem request) { var user = _userManager.GetUserById(request.UserId); @@ -523,13 +523,19 @@ namespace MediaBrowser.Api.UserLibrary var task = _userDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None); Task.WaitAll(task); + + data = _userDataRepository.GetUserData(user.Id, key); + + var dto = DtoBuilder.GetUserItemDataDto(data); + + return ToOptimizedResult(dto); } /// /// Deletes the specified request. /// /// The request. - public void Delete(UnmarkFavoriteItem request) + public object Delete(UnmarkFavoriteItem request) { var user = _userManager.GetUserById(request.UserId); @@ -546,13 +552,19 @@ namespace MediaBrowser.Api.UserLibrary var task = _userDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None); Task.WaitAll(task); + + data = _userDataRepository.GetUserData(user.Id, key); + + var dto = DtoBuilder.GetUserItemDataDto(data); + + return ToOptimizedResult(dto); } /// /// Deletes the specified request. /// /// The request. - public void Delete(DeleteUserItemRating request) + public object Delete(DeleteUserItemRating request) { var user = _userManager.GetUserById(request.UserId); @@ -568,13 +580,19 @@ namespace MediaBrowser.Api.UserLibrary var task = _userDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None); Task.WaitAll(task); + + data = _userDataRepository.GetUserData(user.Id, key); + + var dto = DtoBuilder.GetUserItemDataDto(data); + + return ToOptimizedResult(dto); } /// /// Posts the specified request. /// /// The request. - public void Post(UpdateUserItemRating request) + public object Post(UpdateUserItemRating request) { var user = _userManager.GetUserById(request.UserId); @@ -590,19 +608,25 @@ namespace MediaBrowser.Api.UserLibrary var task = _userDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None); Task.WaitAll(task); + + data = _userDataRepository.GetUserData(user.Id, key); + + var dto = DtoBuilder.GetUserItemDataDto(data); + + return ToOptimizedResult(dto); } /// /// Posts the specified request. /// /// The request. - public void Post(MarkPlayedItem request) + public object Post(MarkPlayedItem request) { var user = _userManager.GetUserById(request.UserId); var task = UpdatePlayedStatus(user, request.Id, true); - Task.WaitAll(task); + return ToOptimizedResult(task.Result); } private SessionInfo GetSession() @@ -669,13 +693,13 @@ namespace MediaBrowser.Api.UserLibrary /// Deletes the specified request. /// /// The request. - public void Delete(MarkUnplayedItem request) + public object Delete(MarkUnplayedItem request) { var user = _userManager.GetUserById(request.UserId); var task = UpdatePlayedStatus(user, request.Id, false); - Task.WaitAll(task); + return ToOptimizedResult(task.Result); } /// @@ -685,11 +709,13 @@ namespace MediaBrowser.Api.UserLibrary /// The item id. /// if set to true [was played]. /// Task. - private Task UpdatePlayedStatus(User user, string itemId, bool wasPlayed) + private async Task UpdatePlayedStatus(User user, string itemId, bool wasPlayed) { var item = DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id); - return item.SetPlayedStatus(user, wasPlayed, _userDataRepository); + await item.SetPlayedStatus(user, wasPlayed, _userDataRepository).ConfigureAwait(false); + + return DtoBuilder.GetUserItemDataDto(_userDataRepository.GetUserData(user.Id, item.GetUserDataKey())); } } } -- cgit v1.2.3