diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-06-28 20:49:44 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-06-28 20:49:44 -0400 |
| commit | a018d28b12dae200e2acd9da18268ad0b319b94b (patch) | |
| tree | 2cf5b785ed499ac2028adf37329f14cdd0856616 /MediaBrowser.Api/ItemRefreshService.cs | |
| parent | 088d04392f0910ece15e84f28aed9f27b3391dae (diff) | |
support refreshing collection folders through the api
Diffstat (limited to 'MediaBrowser.Api/ItemRefreshService.cs')
| -rw-r--r-- | MediaBrowser.Api/ItemRefreshService.cs | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/MediaBrowser.Api/ItemRefreshService.cs b/MediaBrowser.Api/ItemRefreshService.cs index a338f6ad3..71f07fb35 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<double>(), 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<double>(), CancellationToken.None, request.Recursive, request.Forced).ConfigureAwait(false); + } } } catch (Exception ex) @@ -230,5 +240,26 @@ namespace MediaBrowser.Api Logger.ErrorException("Error refreshing library", ex); } } + + /// <summary> + /// Refreshes the collection folder children. + /// </summary> + /// <param name="request">The request.</param> + /// <param name="collectionFolder">The collection folder.</param> + /// <returns>Task.</returns> + 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<double>(), CancellationToken.None, request.Recursive, request.Forced).ConfigureAwait(false); + } + } + } } } |
