Browse Source

Restore NFO/import ordering by using ListOrder instead of SortOrder

theguymadmax 2 weeks ago
parent
commit
2a54669a8a
1 changed files with 8 additions and 6 deletions
  1. 8 6
      Jellyfin.Server.Implementations/Item/PeopleRepository.cs

+ 8 - 6
Jellyfin.Server.Implementations/Item/PeopleRepository.cs

@@ -104,9 +104,7 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I
 
 
         var existingMaps = context.PeopleBaseItemMap.Include(e => e.People).Where(e => e.ItemId == itemId).ToList();
         var existingMaps = context.PeopleBaseItemMap.Include(e => e.People).Where(e => e.ItemId == itemId).ToList();
 
 
-        var maxSortOrder = Math.Max(
-            context.PeopleBaseItemMap.Include(e => e.People).Where(e => e.ItemId == itemId && e.People.PersonType == PersonKind.Actor.ToString()).Max(e => (int?)e.SortOrder) ?? 0,
-            people.Where(p => p.Type == PersonKind.Actor && p.SortOrder.HasValue).Max(p => (int?)p.SortOrder) ?? 0);
+        var listOrder = 0;
 
 
         foreach (var person in people)
         foreach (var person in people)
         {
         {
@@ -114,23 +112,27 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I
             var existingMap = existingMaps.FirstOrDefault(e => e.People.Name == person.Name && e.People.PersonType == person.Type.ToString() && e.Role == person.Role);
             var existingMap = existingMaps.FirstOrDefault(e => e.People.Name == person.Name && e.People.PersonType == person.Type.ToString() && e.Role == person.Role);
             if (existingMap is null)
             if (existingMap is null)
             {
             {
-                var sortOrder = person.Type == PersonKind.Actor ? (person.SortOrder ?? ++maxSortOrder) : person.SortOrder;
                 context.PeopleBaseItemMap.Add(new PeopleBaseItemMap()
                 context.PeopleBaseItemMap.Add(new PeopleBaseItemMap()
                 {
                 {
                     Item = null!,
                     Item = null!,
                     ItemId = itemId,
                     ItemId = itemId,
                     People = null!,
                     People = null!,
                     PeopleId = entityPerson.Id,
                     PeopleId = entityPerson.Id,
-                    ListOrder = sortOrder,
-                    SortOrder = sortOrder,
+                    ListOrder = listOrder,
+                    SortOrder = person.SortOrder,
                     Role = person.Role
                     Role = person.Role
                 });
                 });
             }
             }
             else
             else
             {
             {
+                // Update the order for existing mappings
+                existingMap.ListOrder = listOrder;
+                existingMap.SortOrder = person.SortOrder;
                 // person mapping already exists so remove from list
                 // person mapping already exists so remove from list
                 existingMaps.Remove(existingMap);
                 existingMaps.Remove(existingMap);
             }
             }
+
+            listOrder++;
         }
         }
 
 
         context.PeopleBaseItemMap.RemoveRange(existingMaps);
         context.PeopleBaseItemMap.RemoveRange(existingMaps);