Browse Source

update offline detection

Luke Pulverenti 9 years ago
parent
commit
e90072b75f

+ 3 - 3
MediaBrowser.Controller/Entities/Folder.cs

@@ -702,7 +702,7 @@ namespace MediaBrowser.Controller.Entities
         /// </summary>
         /// <param name="path">The path.</param>
         /// <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))
             {
@@ -736,12 +736,12 @@ namespace MediaBrowser.Controller.Entities
         /// <param name="folders">The folders.</param>
         /// <param name="path">The path.</param>
         /// <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));
         }
 
-        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);
         }

+ 15 - 6
MediaBrowser.Server.Implementations/Persistence/CleanDatabaseScheduledTask.cs

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