aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-28 20:49:44 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-28 20:49:44 -0400
commita018d28b12dae200e2acd9da18268ad0b319b94b (patch)
tree2cf5b785ed499ac2028adf37329f14cdd0856616
parent088d04392f0910ece15e84f28aed9f27b3391dae (diff)
support refreshing collection folders through the api
-rw-r--r--MediaBrowser.Api/Images/ImageService.cs14
-rw-r--r--MediaBrowser.Api/ItemRefreshService.cs37
2 files changed, 35 insertions, 16 deletions
diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs
index 3074b0d5b..46dac4070 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 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);
+ }
+ }
+ }
}
}