diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index ff06c7ce4..96ef46239 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -444,8 +444,8 @@ namespace MediaBrowser.Providers.Manager
}
}
- if ((originalPremiereDate ?? DateTime.MinValue) != (item.PremiereDate ?? DateTime.MinValue) ||
- (originalProductionYear ?? -1) != (item.ProductionYear ?? -1))
+ if ((originalPremiereDate ?? DateTime.MinValue) != (item.PremiereDate ?? DateTime.MinValue)
+ || (originalProductionYear ?? -1) != (item.ProductionYear ?? -1))
{
updateType |= ItemUpdateType.MetadataEdit;
}
diff --git a/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj b/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj
index eaf2bc35c..9fed8cbd9 100644
--- a/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj
+++ b/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj
@@ -27,6 +27,11 @@
+
+
+
+
+
diff --git a/src/Jellyfin.Extensions/StringExtensions.cs b/src/Jellyfin.Extensions/StringExtensions.cs
index b19be071b..f30b63945 100644
--- a/src/Jellyfin.Extensions/StringExtensions.cs
+++ b/src/Jellyfin.Extensions/StringExtensions.cs
@@ -20,23 +20,8 @@ namespace Jellyfin.Extensions
/// The string to act on.
/// The string without diacritics character.
public static string RemoveDiacritics(this string text)
- {
- string withDiactritics = _nonConformingUnicode
- .Replace(text, string.Empty)
- .Normalize(NormalizationForm.FormD);
-
- var withoutDiactritics = new StringBuilder();
- foreach (char c in withDiactritics)
- {
- UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(c);
- if (uc != UnicodeCategory.NonSpacingMark)
- {
- withoutDiactritics.Append(c);
- }
- }
-
- return withoutDiactritics.ToString().Normalize(NormalizationForm.FormC);
- }
+ => Diacritics.Extensions.StringExtensions.RemoveDiacritics(
+ _nonConformingUnicode.Replace(text, string.Empty));
///
/// Checks whether or not the specified string has diacritics in it.
@@ -44,9 +29,8 @@ namespace Jellyfin.Extensions
/// The string to check.
/// True if the string has diacritics, false otherwise.
public static bool HasDiacritics(this string text)
- {
- return !string.Equals(text, text.RemoveDiacritics(), StringComparison.Ordinal);
- }
+ => Diacritics.Extensions.StringExtensions.HasDiacritics(text)
+ || _nonConformingUnicode.IsMatch(text);
///
/// Counts the number of occurrences of [needle] in the string.
diff --git a/tests/Jellyfin.Extensions.Tests/AlphanumericComparatorTests.cs b/tests/Jellyfin.Extensions.Tests/AlphanumericComparatorTests.cs
index 7730841a1..2a7e8fafd 100644
--- a/tests/Jellyfin.Extensions.Tests/AlphanumericComparatorTests.cs
+++ b/tests/Jellyfin.Extensions.Tests/AlphanumericComparatorTests.cs
@@ -23,7 +23,7 @@ namespace Jellyfin.Extensions.Tests
{
var copy = strings.Reverse().ToArray();
Array.Sort(copy, new AlphanumericComparator());
- Assert.True(strings.SequenceEqual(copy));
+ Assert.Equal(strings, copy);
}
}
}
diff --git a/tests/Jellyfin.Extensions.Tests/StringExtensionsTests.cs b/tests/Jellyfin.Extensions.Tests/StringExtensionsTests.cs
index 903d88caa..ef8cbef9d 100644
--- a/tests/Jellyfin.Extensions.Tests/StringExtensionsTests.cs
+++ b/tests/Jellyfin.Extensions.Tests/StringExtensionsTests.cs
@@ -9,6 +9,7 @@ namespace Jellyfin.Extensions.Tests
[InlineData("", "")] // Identity edge-case (no diactritics)
[InlineData("Indiana Jones", "Indiana Jones")] // Identity (no diactritics)
[InlineData("a\ud800b", "ab")] // Invalid UTF-16 char stripping
+ [InlineData("åäö", "aao")] // Issue #7484
[InlineData("Jön", "Jon")] // Issue #7484
[InlineData("Jönssonligan", "Jonssonligan")] // Issue #7484
[InlineData("Kieślowski", "Kieslowski")] // Issue #7450
@@ -25,6 +26,7 @@ namespace Jellyfin.Extensions.Tests
[InlineData("", false)] // Identity edge-case (no diactritics)
[InlineData("Indiana Jones", false)] // Identity (no diactritics)
[InlineData("a\ud800b", true)] // Invalid UTF-16 char stripping
+ [InlineData("åäö", true)] // Issue #7484
[InlineData("Jön", true)] // Issue #7484
[InlineData("Jönssonligan", true)] // Issue #7484
[InlineData("Kieślowski", true)] // Issue #7450