aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/Folder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Entities/Folder.cs')
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs63
1 files changed, 15 insertions, 48 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 02da2fe61..63a1c2bab 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Progress;
using MediaBrowser.Controller.Entities.TV;
+using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Localization;
using MediaBrowser.Controller.Providers;
@@ -27,7 +28,7 @@ namespace MediaBrowser.Controller.Entities
public List<Guid> ThemeSongIds { get; set; }
public List<Guid> ThemeVideoIds { get; set; }
-
+
public Folder()
{
LinkedChildren = new List<LinkedChild>();
@@ -379,7 +380,7 @@ namespace MediaBrowser.Controller.Entities
}
catch (IOException ex)
{
- nonCachedChildren = new BaseItem[] {};
+ nonCachedChildren = new BaseItem[] { };
Logger.ErrorException("Error getting file system entries for {0}", ex, Path);
}
@@ -402,8 +403,6 @@ namespace MediaBrowser.Controller.Entities
if (currentChildren.TryGetValue(child.Id, out currentChild))
{
- currentChild.ResetResolveArgs(child.ResolveArgs);
-
//existing item - check if it has changed
if (currentChild.HasChanged(child))
{
@@ -411,7 +410,7 @@ namespace MediaBrowser.Controller.Entities
if (currentChildLocationType != LocationType.Remote &&
currentChildLocationType != LocationType.Virtual)
{
- EntityResolutionHelper.EnsureDates(FileSystem, currentChild, child.ResolveArgs, false);
+ currentChild.DateModified = child.DateModified;
}
currentChild.IsInMixedFolder = child.IsInMixedFolder;
@@ -539,8 +538,7 @@ namespace MediaBrowser.Controller.Entities
await child.RefreshMetadata(new MetadataRefreshOptions
{
ForceSave = currentTuple.Item2,
- ReplaceAllMetadata = forceRefreshMetadata,
- ResetResolveArgs = false
+ ReplaceAllMetadata = forceRefreshMetadata
}, cancellationToken).ConfigureAwait(false);
}
@@ -581,16 +579,6 @@ namespace MediaBrowser.Controller.Entities
});
await ((Folder)child).ValidateChildren(innerProgress, cancellationToken, recursive, forceRefreshMetadata).ConfigureAwait(false);
-
- try
- {
- // Some folder providers are unable to refresh until children have been refreshed.
- await child.RefreshMetadata(cancellationToken, resetResolveArgs: false).ConfigureAwait(false);
- }
- catch (IOException ex)
- {
- Logger.ErrorException("Error refreshing {0}", ex, child.Path ?? child.Name);
- }
}
else
{
@@ -661,14 +649,7 @@ namespace MediaBrowser.Controller.Entities
/// <returns>IEnumerable{BaseItem}.</returns>
protected virtual IEnumerable<BaseItem> GetNonCachedChildren()
{
- var resolveArgs = ResolveArgs;
-
- if (resolveArgs == null || resolveArgs.FileSystemDictionary == null)
- {
- Logger.Error("ResolveArgs null for {0}", Path);
- }
-
- return LibraryManager.ResolvePaths<BaseItem>(resolveArgs.FileSystemChildren, this);
+ return LibraryManager.ResolvePaths<BaseItem>(GetFileSystemChildren(), this);
}
/// <summary>
@@ -914,43 +895,29 @@ namespace MediaBrowser.Controller.Entities
return item;
}
- protected override Task BeforeRefreshMetadata(MetadataRefreshOptions options, CancellationToken cancellationToken)
+ protected override Task BeforeRefreshMetadata(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
{
if (SupportsShortcutChildren && LocationType == LocationType.FileSystem)
{
- RefreshLinkedChildren();
+ if (RefreshLinkedChildren(fileSystemChildren))
+ {
+ options.ForceSave = true;
+ }
}
- return base.BeforeRefreshMetadata(options, cancellationToken);
+ return base.BeforeRefreshMetadata(options, fileSystemChildren, cancellationToken);
}
/// <summary>
/// Refreshes the linked children.
/// </summary>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- private bool RefreshLinkedChildren()
+ private bool RefreshLinkedChildren(IEnumerable<FileSystemInfo> fileSystemChildren)
{
- ItemResolveArgs resolveArgs;
-
- try
- {
- resolveArgs = ResolveArgs;
-
- if (!resolveArgs.IsDirectory)
- {
- return false;
- }
- }
- catch (IOException ex)
- {
- Logger.ErrorException("Error getting ResolveArgs for {0}", ex, Path);
- return false;
- }
-
var currentManualLinks = LinkedChildren.Where(i => i.Type == LinkedChildType.Manual).ToList();
var currentShortcutLinks = LinkedChildren.Where(i => i.Type == LinkedChildType.Shortcut).ToList();
- var newShortcutLinks = resolveArgs.FileSystemChildren
+ var newShortcutLinks = fileSystemChildren
.Where(i => (i.Attributes & FileAttributes.Directory) != FileAttributes.Directory && FileSystem.IsShortcut(i.FullName))
.Select(i =>
{
@@ -1058,7 +1025,7 @@ namespace MediaBrowser.Controller.Entities
return this;
}
- if (locationType != LocationType.Virtual && ResolveArgs.PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
+ if (locationType != LocationType.Virtual && PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
{
return this;
}