diff --git a/app/build.gradle b/app/build.gradle index 8a206cbc3..898397f2e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -210,6 +210,9 @@ dependencies { final acra_version = '5.5.0' implementation "ch.acra:acra-http:$acra_version" + // Sort + implementation 'com.github.gpanther:java-nat-sort:natural-comparator-1.1' + // UI implementation 'com.dmitrymalkovich.android:material-design-dimens:1.4' implementation 'com.github.dmytrodanylyk.android-process-button:library:1.0.4' diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt index ae12de346..1ae62a62e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.util.lang import kotlin.math.floor +import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator /** * Replaces the given string to have at most [count] characters using [replacement] at its end. @@ -32,9 +33,8 @@ fun String.truncateCenter(count: Int, replacement: String = "..."): String { * Case-insensitive natural comparator for strings. */ fun String.compareToCaseInsensitiveNaturalOrder(other: String): Int { - return compareBy { it.length } - .then(String.CASE_INSENSITIVE_ORDER) - .then(naturalOrder()).compare(this, other) + val comparator = CaseInsensitiveSimpleNaturalComparator.getInstance() + return comparator.compare(this, other) } /**