diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index 3074b0d5bc..46dac4070a 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -785,19 +785,7 @@ namespace MediaBrowser.Api.Images await _providerManager.SaveImage(entity, memoryStream, mimeType, imageType, imageIndex, CancellationToken.None).ConfigureAwait(false); - var user = entity as User; - - if (user != null) - { - await _userManager.UpdateUser(user).ConfigureAwait(false); - } - else - { - await _libraryManager.UpdateItem(entity, ItemUpdateType.ImageUpdate, CancellationToken.None) - .ConfigureAwait(false); - } - - await entity.RefreshMetadata(CancellationToken.None, allowSlowProviders: false).ConfigureAwait(false); + await entity.RefreshMetadata(CancellationToken.None, forceRefresh: true, forceSave: true, allowSlowProviders: false).ConfigureAwait(false); } } } diff --git a/MediaBrowser.Api/ItemRefreshService.cs b/MediaBrowser.Api/ItemRefreshService.cs index a338f6ad3d..71f07fb359 100644 --- a/MediaBrowser.Api/ItemRefreshService.cs +++ b/MediaBrowser.Api/ItemRefreshService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Dto; +using System.Linq; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using ServiceStack.ServiceHost; @@ -221,8 +222,17 @@ namespace MediaBrowser.Api if (folder != null) { - await folder.ValidateChildren(new Progress(), CancellationToken.None, request.Recursive, - request.Forced).ConfigureAwait(false); + // Collection folders don't validate their children so we'll have to simulate that here + var collectionFolder = folder as CollectionFolder; + + if (collectionFolder != null) + { + await RefreshCollectionFolderChildren(request, collectionFolder).ConfigureAwait(false); + } + else + { + await folder.ValidateChildren(new Progress(), CancellationToken.None, request.Recursive, request.Forced).ConfigureAwait(false); + } } } catch (Exception ex) @@ -230,5 +240,26 @@ namespace MediaBrowser.Api Logger.ErrorException("Error refreshing library", ex); } } + + /// + /// Refreshes the collection folder children. + /// + /// The request. + /// The collection folder. + /// Task. + private async Task RefreshCollectionFolderChildren(RefreshItem request, CollectionFolder collectionFolder) + { + foreach (var child in collectionFolder.Children.ToList()) + { + await child.RefreshMetadata(CancellationToken.None, forceRefresh: request.Forced).ConfigureAwait(false); + + var folder = child as Folder; + + if (folder != null) + { + await folder.ValidateChildren(new Progress(), CancellationToken.None, request.Recursive, request.Forced).ConfigureAwait(false); + } + } + } } }