Parcourir la source

for for web socket sending the root folder

Luke Pulverenti il y a 12 ans
Parent
commit
8ed35a00aa

+ 1 - 1
MediaBrowser.Controller/Entities/CollectionFolder.cs

@@ -79,7 +79,7 @@ namespace MediaBrowser.Controller.Entities
                 {
                     // Accessing ResolveArgs could involve file system access
                     folderIds = ResolveArgs.PhysicalLocations
-                        .Select(f => (f.GetMBId(typeof(Folder))))
+                        .Select(f => f.GetMBId(typeof(Folder)))
                         .ToDictionary(i => i);
                 }
                 catch (IOException ex)

+ 19 - 2
MediaBrowser.ServerApplication/EntryPoints/LibraryChangedNotifier.cs

@@ -249,7 +249,7 @@ namespace MediaBrowser.ServerApplication.EntryPoints
         /// <param name="collections">The collections.</param>
         /// <param name="allRecursiveChildren">All recursive children.</param>
         /// <returns>IEnumerable{``0}.</returns>
-        private IEnumerable<T> TranslatePhysicalItemToUserLibrary<T>(T item, User user, List<BaseItem> collections, Dictionary<Guid, BaseItem> allRecursiveChildren)
+        private IEnumerable<T> TranslatePhysicalItemToUserLibrary<T>(T item, User user, IEnumerable<BaseItem> collections, Dictionary<Guid, BaseItem> allRecursiveChildren)
             where T : BaseItem
         {
             // If the physical root changed, return the user root
@@ -261,7 +261,24 @@ namespace MediaBrowser.ServerApplication.EntryPoints
             // Need to find what user collection folder this belongs to
             if (item.Parent is AggregateFolder)
             {
-                return new T[] { user.RootFolder as T };
+                if (item.LocationType == LocationType.FileSystem)
+                {
+                    return collections.Where(i =>
+                    {
+
+                        try
+                        {
+                            return i.LocationType == LocationType.FileSystem &&
+                                   i.ResolveArgs.PhysicalLocations.Contains(item.Path);
+                        }
+                        catch (Exception ex)
+                        {
+                            _logger.ErrorException("Error getting ResolveArgs for {0}", ex, i.Path);
+                            return false;
+                        }
+
+                    }).Cast<T>();
+                }
             }
 
             // If it's a user root, return it only if it's the right one