瀏覽代碼

Never revert locked state

Shadowghost 1 年之前
父節點
當前提交
e67eb48540

+ 6 - 11
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -1102,7 +1102,12 @@ namespace MediaBrowser.Providers.Manager
 
 
             if (mergeMetadataSettings)
             if (mergeMetadataSettings)
             {
             {
-                if (replaceData || target.LockedFields.Length == 0)
+                if (replaceData || !target.IsLocked)
+                {
+                    target.IsLocked = target.IsLocked || source.IsLocked;
+                }
+
+                if (target.LockedFields.Length == 0)
                 {
                 {
                     target.LockedFields = source.LockedFields;
                     target.LockedFields = source.LockedFields;
                 }
                 }
@@ -1111,21 +1116,11 @@ namespace MediaBrowser.Providers.Manager
                     target.LockedFields = target.LockedFields.Concat(source.LockedFields).Distinct().ToArray();
                     target.LockedFields = target.LockedFields.Concat(source.LockedFields).Distinct().ToArray();
                 }
                 }
 
 
-                if (replaceData)
-                {
-                    target.IsLocked = source.IsLocked;
-                }
-
                 if (source.DateCreated != default)
                 if (source.DateCreated != default)
                 {
                 {
                     target.DateCreated = source.DateCreated;
                     target.DateCreated = source.DateCreated;
                 }
                 }
 
 
-                if (replaceData)
-                {
-                    target.IsLocked = source.IsLocked;
-                }
-
                 if (replaceData || string.IsNullOrEmpty(target.PreferredMetadataCountryCode))
                 if (replaceData || string.IsNullOrEmpty(target.PreferredMetadataCountryCode))
                 {
                 {
                     target.PreferredMetadataCountryCode = source.PreferredMetadataCountryCode;
                     target.PreferredMetadataCountryCode = source.PreferredMetadataCountryCode;

+ 2 - 1
tests/Jellyfin.Providers.Tests/Manager/MetadataServiceTests.cs

@@ -1,5 +1,6 @@
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.Linq;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Movies;
 using MediaBrowser.Controller.Entities.Movies;
@@ -19,7 +20,7 @@ namespace Jellyfin.Providers.Tests.Manager
         [InlineData(true, true)]
         [InlineData(true, true)]
         public void MergeBaseItemData_MergeMetadataSettings_MergesWhenSet(bool mergeMetadataSettings, bool defaultDate)
         public void MergeBaseItemData_MergeMetadataSettings_MergesWhenSet(bool mergeMetadataSettings, bool defaultDate)
         {
         {
-            var newLocked = new[] { MetadataField.Cast };
+            var newLocked = new[] { MetadataField.Genres, MetadataField.Cast };
             var newString = "new";
             var newString = "new";
             var newDate = DateTime.Now;
             var newDate = DateTime.Now;