update offline detection

pull/702/head
Luke Pulverenti 9 years ago
parent f2689c4a5a
commit e90072b75f

@ -702,7 +702,7 @@ namespace MediaBrowser.Controller.Entities
/// </summary> /// </summary>
/// <param name="path">The path.</param> /// <param name="path">The path.</param>
/// <returns><c>true</c> if the specified path is offline; otherwise, <c>false</c>.</returns> /// <returns><c>true</c> if the specified path is offline; otherwise, <c>false</c>.</returns>
private bool IsPathOffline(string path) public static bool IsPathOffline(string path)
{ {
if (FileSystem.FileExists(path)) if (FileSystem.FileExists(path))
{ {
@ -736,12 +736,12 @@ namespace MediaBrowser.Controller.Entities
/// <param name="folders">The folders.</param> /// <param name="folders">The folders.</param>
/// <param name="path">The path.</param> /// <param name="path">The path.</param>
/// <returns><c>true</c> if the specified folders contains path; otherwise, <c>false</c>.</returns> /// <returns><c>true</c> if the specified folders contains path; otherwise, <c>false</c>.</returns>
private bool ContainsPath(IEnumerable<VirtualFolderInfo> folders, string path) private static bool ContainsPath(IEnumerable<VirtualFolderInfo> folders, string path)
{ {
return folders.SelectMany(i => i.Locations).Any(i => ContainsPath(i, path)); return folders.SelectMany(i => i.Locations).Any(i => ContainsPath(i, path));
} }
private bool ContainsPath(string parent, string path) private static bool ContainsPath(string parent, string path)
{ {
return string.Equals(parent, path, StringComparison.OrdinalIgnoreCase) || FileSystem.ContainsSubPath(parent, path); return string.Equals(parent, path, StringComparison.OrdinalIgnoreCase) || FileSystem.ContainsSubPath(parent, path);
} }

@ -184,16 +184,25 @@ namespace MediaBrowser.Server.Implementations.Persistence
try try
{ {
if (!_fileSystem.FileExists(path) && !_fileSystem.DirectoryExists(path)) if (_fileSystem.FileExists(path) || _fileSystem.DirectoryExists(path))
{ {
continue;
}
var libraryItem = _libraryManager.GetItemById(item.Item1); var libraryItem = _libraryManager.GetItemById(item.Item1);
if (Folder.IsPathOffline(path))
{
libraryItem.IsOffline = true;
await libraryItem.UpdateToRepository(ItemUpdateType.None, cancellationToken).ConfigureAwait(false);
continue;
}
await _libraryManager.DeleteItem(libraryItem, new DeleteOptions await _libraryManager.DeleteItem(libraryItem, new DeleteOptions
{ {
DeleteFileLocation = false DeleteFileLocation = false
}); });
} }
}
catch (OperationCanceledException) catch (OperationCanceledException)
{ {
throw; throw;

Loading…
Cancel
Save