瀏覽代碼

applied review comments

JPVenson 7 月之前
父節點
當前提交
e20ecfc670

+ 8 - 2
Emby.Server.Implementations/Data/ItemTypeLookup.cs

@@ -22,10 +22,16 @@ namespace Emby.Server.Implementations.Data;
 public class ItemTypeLookup : IItemTypeLookup
 {
     /// <inheritdoc />
-    public IReadOnlyList<string> MusicGenreTypes => BaseItemKindNames.Where(e => e.Key is BaseItemKind.Audio or BaseItemKind.MusicVideo or BaseItemKind.MusicAlbum or BaseItemKind.MusicArtist).Select(e => e.Value).ToImmutableArray();
+    public IReadOnlyList<string> MusicGenreTypes { get; } = [
+
+         typeof(Audio).FullName!,
+         typeof(MusicVideo).FullName!,
+         typeof(MusicAlbum).FullName!,
+         typeof(MusicArtist).FullName!,
+    ];
 
     /// <inheritdoc />
-    public IDictionary<BaseItemKind, string> BaseItemKindNames { get; } = new Dictionary<BaseItemKind, string>()
+    public IReadOnlyDictionary<BaseItemKind, string> BaseItemKindNames { get; } = new Dictionary<BaseItemKind, string>()
     {
         { BaseItemKind.AggregateFolder, typeof(AggregateFolder).FullName! },
         { BaseItemKind.Audio, typeof(Audio).FullName! },

+ 1 - 8
Emby.Server.Implementations/Library/MusicManager.cs

@@ -27,14 +27,7 @@ namespace Emby.Server.Implementations.Library
 
         public IReadOnlyList<BaseItem> GetInstantMixFromSong(Audio item, User? user, DtoOptions dtoOptions)
         {
-            var list = new List<BaseItem>
-            {
-                item
-            };
-
-            list.AddRange(GetInstantMixFromGenres(item.Genres, user, dtoOptions));
-
-            return [.. list];
+            return GetInstantMixFromGenres(item.Genres, user, dtoOptions);
         }
 
         /// <inheritdoc />

+ 5 - 3
Jellyfin.Server.Implementations/Item/PeopleRepository.cs

@@ -16,10 +16,11 @@ namespace Jellyfin.Server.Implementations.Item;
 /// Manager for handling people.
 /// </summary>
 /// <param name="dbProvider">Efcore Factory.</param>
+/// <param name="itemTypeLookup">Items lookup service.</param>
 /// <remarks>
 /// Initializes a new instance of the <see cref="PeopleRepository"/> class.
 /// </remarks>
-public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider) : IPeopleRepository
+public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, IItemTypeLookup itemTypeLookup) : IPeopleRepository
 {
     private readonly IDbContextFactory<JellyfinDbContext> _dbProvider = dbProvider;
 
@@ -118,8 +119,9 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider) :
     {
         if (filter.User is not null && filter.IsFavorite.HasValue)
         {
-            query = query.Where(e => e.PersonType == typeof(Person).FullName)
-                .Where(e => context.BaseItems.Where(d => context.UserData.Where(e => e.IsFavorite == filter.IsFavorite && e.UserId.Equals(filter.User.Id)).Any(f => f.Key == d.UserDataKey))
+            var personType = itemTypeLookup.BaseItemKindNames[BaseItemKind.Person];
+            query = query.Where(e => e.PersonType == personType)
+                .Where(e => context.BaseItems.Where(d => context.UserData.Where(w => w.IsFavorite == filter.IsFavorite && w.UserId.Equals(filter.User.Id)).Any(f => f.Key == d.UserDataKey))
                     .Select(f => f.Name).Contains(e.Name));
         }
 

+ 1 - 1
MediaBrowser.Controller/Persistence/IItemTypeLookup.cs

@@ -18,5 +18,5 @@ public interface IItemTypeLookup
     /// <summary>
     /// Gets mapping for all BaseItemKinds and their expected serialization target.
     /// </summary>
-    public IDictionary<BaseItemKind, string> BaseItemKindNames { get; }
+    public IReadOnlyDictionary<BaseItemKind, string> BaseItemKindNames { get; }
 }