aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Providers/Manager/ItemImageProvider.cs10
-rw-r--r--tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs1
2 files changed, 9 insertions, 2 deletions
diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs
index 1bb7ffcce..36a7c2fab 100644
--- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs
+++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs
@@ -68,16 +68,22 @@ namespace MediaBrowser.Providers.Manager
/// Removes all existing images from the provided item.
/// </summary>
/// <param name="item">The <see cref="BaseItem"/> to remove images from.</param>
+ /// <param name="canDeleteLocal">Whether removing images outside metadata folder is allowed.</param>
/// <returns><c>true</c> if changes were made to the item; otherwise <c>false</c>.</returns>
- public bool RemoveImages(BaseItem item)
+ public bool RemoveImages(BaseItem item, bool canDeleteLocal = false)
{
var singular = new List<ItemImageInfo>();
+ var itemMetadataPath = item.GetInternalMetadataPath();
for (var i = 0; i < _singularImages.Length; i++)
{
var currentImage = item.GetImageInfo(_singularImages[i], 0);
if (currentImage is not null)
{
- singular.Add(currentImage);
+ var imageInMetadataFolder = currentImage.Path.StartsWith(itemMetadataPath, StringComparison.OrdinalIgnoreCase);
+ if (imageInMetadataFolder || canDeleteLocal || item.IsSaveLocalMetadataEnabled())
+ {
+ singular.Add(currentImage);
+ }
}
}
diff --git a/tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs b/tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs
index 5dd3eb8ab..0c7d2487c 100644
--- a/tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs
+++ b/tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs
@@ -580,6 +580,7 @@ namespace Jellyfin.Providers.Tests.Manager
CallBase = true
};
item.Setup(m => m.IsSaveLocalMetadataEnabled()).Returns(false);
+ item.Setup(m => m.GetInternalMetadataPath()).Returns(string.Empty);
var path = validPaths ? _testDataImagePath.Format : "invalid path {0}";
for (int i = 0; i < count; i++)