aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-06-03 23:34:36 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-06-03 23:34:36 -0400
commit3640f620863e4947a07ad6ebbf54ab6427534b38 (patch)
tree2b9c58f6e0ea069f282e46cbf081b38229bacb94 /MediaBrowser.Controller/Entities
parent71351344d7f5a9057fe19b754f5d14d917e79d60 (diff)
create collections from movies page
Diffstat (limited to 'MediaBrowser.Controller/Entities')
-rw-r--r--MediaBrowser.Controller/Entities/CollectionFolder.cs12
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs5
-rw-r--r--MediaBrowser.Controller/Entities/UserRootFolder.cs19
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);
+ }
+ }
}
}