Avoid unnecessary string creation when sorting

This commit is contained in:
arkon 2021-12-24 10:26:24 -05:00
parent 448645d83a
commit 1c5c370c12
4 changed files with 7 additions and 8 deletions

View File

@ -34,7 +34,6 @@ import uy.kohesive.injekt.injectLazy
import java.io.File
import java.io.FileInputStream
import java.io.InputStream
import java.util.Locale
import java.util.concurrent.TimeUnit
import java.util.zip.ZipFile
@ -111,9 +110,9 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour
when (state?.index) {
0 -> {
mangaDirs = if (state.ascending) {
mangaDirs.sortedBy { it.name.lowercase(Locale.ENGLISH) }
mangaDirs.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.name }))
} else {
mangaDirs.sortedByDescending { it.name.lowercase(Locale.ENGLISH) }
mangaDirs.sortedWith(compareByDescending(String.CASE_INSENSITIVE_ORDER, { it.name }))
}
}
1 -> {
@ -176,7 +175,7 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour
.asSequence()
.mapNotNull { File(it, manga.key).listFiles()?.toList() }
.flatten()
.firstOrNull { it.extension.lowercase() == "json" }
.firstOrNull { it.extension.equals("json", ignoreCase = true) }
return if (localDetails != null) {
val obj = json.decodeFromStream<JsonObject>(localDetails.inputStream())

View File

@ -42,7 +42,7 @@ class SourceFilterController : SettingsController() {
)
orderedLangs.forEach { lang ->
val sources = sourcesByLang[lang].orEmpty().sortedBy { it.name.lowercase() }
val sources = sourcesByLang[lang].orEmpty().sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.name }))
// Create a preference group and set initial state and change listener
switchPreferenceCategory {

View File

@ -45,7 +45,7 @@ class LicensesController :
viewScope.launchUI {
val licenseItems = withIOContext {
Libs(view.context).libraries
.sortedBy { it.libraryName.lowercase() }
.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.libraryName }))
.map { LicensesItem(it) }
}
binding.progress.hide()

View File

@ -130,8 +130,8 @@ fun syncChaptersWithSource(
// Try to to use the fetch date it originally had to not pollute 'Updates' tab
toDelete.filter { it.chapter_number == chapter.chapter_number }
.minByOrNull { it.date_fetch }!!.let {
chapter.date_fetch = it.date_fetch
}
chapter.date_fetch = it.date_fetch
}
readded.add(chapter)
}
}