Bond_009 4 سال پیش
والد
کامیت
1c74e2f40e

+ 1 - 1
Emby.Server.Implementations/Collections/CollectionManager.cs

@@ -107,7 +107,7 @@ namespace Emby.Server.Implementations.Collections
 
             var name = _localizationManager.GetLocalizedString("Collections");
 
-            await _libraryManager.AddVirtualFolder(name, CollectionType.BoxSets, libraryOptions, true).ConfigureAwait(false);
+            await _libraryManager.AddVirtualFolder(name, CollectionTypeOptions.BoxSets, libraryOptions, true).ConfigureAwait(false);
 
             return FindFolders(path).First();
         }

+ 13 - 4
Emby.Server.Implementations/Library/LibraryManager.cs

@@ -1240,11 +1240,20 @@ namespace Emby.Server.Implementations.Library
             return info;
         }
 
-        private string GetCollectionType(string path)
+        private CollectionTypeOptions GetCollectionType(string path)
         {
-            return _fileSystem.GetFilePaths(path, new[] { ".collection" }, true, false)
-                .Select(Path.GetFileNameWithoutExtension)
-                .FirstOrDefault(i => !string.IsNullOrEmpty(i));
+            var files = _fileSystem.GetFilePaths(path, new[] { ".collection" }, true, false);
+            foreach (var file in files)
+            {
+                // TODO: @bond use a ReadOnlySpan<char> here when Enum.TryParse supports it
+                // https://github.com/dotnet/runtime/issues/20008
+                if (Enum.TryParse<CollectionTypeOptions>(Path.GetExtension(file), true, out var res))
+                {
+                    return res;
+                }
+            }
+
+            throw new FileNotFoundException("Coudn't find an appropriate collection type file.");
         }
 
         /// <summary>

+ 2 - 2
Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs

@@ -2604,7 +2604,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
                 {
                     Locations = new string[] { customPath },
                     Name = "Recorded Movies",
-                    CollectionType = CollectionType.Movies
+                    CollectionType = CollectionTypeOptions.Movies
                 };
             }
 
@@ -2615,7 +2615,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
                 {
                     Locations = new string[] { customPath },
                     Name = "Recorded Shows",
-                    CollectionType = CollectionType.TvShows
+                    CollectionType = CollectionTypeOptions.TvShows
                 };
             }
         }

+ 8 - 7
MediaBrowser.Model/Entities/CollectionTypeOptions.cs

@@ -4,12 +4,13 @@ namespace MediaBrowser.Model.Entities
 {
     public enum CollectionTypeOptions
     {
-        Movies,
-        Music,
-        TvShows,
-        Books,
-        HomeVideos,
-        MusicVideos,
-        Mixed
+        Movies = 0,
+        TvShows = 1,
+        Music = 2,
+        MusicVideos = 3,
+        HomeVideos = 4,
+        BoxSets = 5,
+        Books = 6,
+        Mixed = 7
     }
 }

+ 1 - 1
MediaBrowser.Model/Entities/VirtualFolderInfo.cs

@@ -35,7 +35,7 @@ namespace MediaBrowser.Model.Entities
         /// Gets or sets the type of the collection.
         /// </summary>
         /// <value>The type of the collection.</value>
-        public string CollectionType { get; set; }
+        public CollectionTypeOptions CollectionType { get; set; }
 
         public LibraryOptions LibraryOptions { get; set; }