diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-06-03 23:34:36 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-06-03 23:34:36 -0400 |
| commit | 3640f620863e4947a07ad6ebbf54ab6427534b38 (patch) | |
| tree | 2b9c58f6e0ea069f282e46cbf081b38229bacb94 /MediaBrowser.Controller/Entities | |
| parent | 71351344d7f5a9057fe19b754f5d14d917e79d60 (diff) | |
create collections from movies page
Diffstat (limited to 'MediaBrowser.Controller/Entities')
| -rw-r--r-- | MediaBrowser.Controller/Entities/CollectionFolder.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserRootFolder.cs | 19 |
3 files changed, 32 insertions, 4 deletions
diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index 8eecebdbc3..4b90741c09 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -121,11 +121,16 @@ namespace MediaBrowser.Controller.Entities /// <param name="refreshOptions">The refresh options.</param> /// <param name="directoryService">The directory service.</param> /// <returns>Task.</returns> - protected override Task ValidateChildrenInternal(IProgress<double> progress, CancellationToken cancellationToken, bool recursive, bool refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService) + protected override async Task ValidateChildrenInternal(IProgress<double> progress, CancellationToken cancellationToken, bool recursive, bool refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService) { + var list = PhysicalLocationsList.ToList(); + CreateResolveArgs(directoryService); - return NullTaskResult; + if (!list.SequenceEqual(PhysicalLocationsList)) + { + await UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); + } } /// <summary> @@ -164,8 +169,7 @@ namespace MediaBrowser.Controller.Entities LibraryManager.RootFolder.Children .OfType<Folder>() .Where(i => i.Path != null && PhysicalLocations.Contains(i.Path, StringComparer.OrdinalIgnoreCase)) - .SelectMany(c => c.Children) - .ToList(); + .SelectMany(c => c.Children); } } } diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index e4d9355d28..5b5747b8f1 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -445,6 +445,11 @@ namespace MediaBrowser.Controller.Entities cancellationToken.ThrowIfCancellationRequested(); + if (this is UserRootFolder) + { + var b = true; + } + foreach (var child in nonCachedChildren) { BaseItem currentChild; diff --git a/MediaBrowser.Controller/Entities/UserRootFolder.cs b/MediaBrowser.Controller/Entities/UserRootFolder.cs index 0290fa39ad..e5a8135c2d 100644 --- a/MediaBrowser.Controller/Entities/UserRootFolder.cs +++ b/MediaBrowser.Controller/Entities/UserRootFolder.cs @@ -2,6 +2,8 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading; +using System.Threading.Tasks; namespace MediaBrowser.Controller.Entities { @@ -32,5 +34,22 @@ namespace MediaBrowser.Controller.Entities return hasChanges; } + + protected override async Task ValidateChildrenInternal(IProgress<double> progress, CancellationToken cancellationToken, bool recursive, bool refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService) + { + await base.ValidateChildrenInternal(progress, cancellationToken, recursive, refreshChildMetadata, refreshOptions, directoryService) + .ConfigureAwait(false); + + // Not the best way to handle this, but it solves an issue + // CollectionFolders aren't always getting saved after changes + // This means that grabbing the item by Id may end up returning the old one + // Fix is in two places - make sure the folder gets saved + // And here to remedy it for affected users. + // In theory this can be removed eventually. + foreach (var item in Children) + { + LibraryManager.RegisterItem(item); + } + } } } |
