Avoid unnecessary string creation when sorting
(cherry picked from commit 1c5c370c12a0541d7f3799be543d66725597d466) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterController.kt
This commit is contained in:
parent
d22591665c
commit
23e43a78d9
@ -32,7 +32,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
|
||||
|
||||
@ -116,9 +115,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 -> {
|
||||
@ -208,7 +207,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 mangaJson = json.decodeFromStream<MangaJson>(localDetails.inputStream())
|
||||
|
@ -249,7 +249,8 @@ class SourceController(bundle: Bundle? = null) :
|
||||
}
|
||||
|
||||
private fun addToCategories(source: Source) {
|
||||
val categories = preferences.sourcesTabCategories().get().sortedBy { it.lowercase() }
|
||||
val categories = preferences.sourcesTabCategories().get()
|
||||
.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it }))
|
||||
.toTypedArray()
|
||||
|
||||
if (categories.isEmpty()) {
|
||||
|
@ -219,7 +219,8 @@ class SourceFilterController : SettingsController() {
|
||||
}
|
||||
|
||||
private fun sortedSources(sources: List<HttpSource>?): List<HttpSource> {
|
||||
val sourceAlpha = sources.orEmpty().sortedBy { it.name.lowercase() }
|
||||
val sourceAlpha = sources.orEmpty()
|
||||
.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.name }))
|
||||
return if (sorting == SourcesSort.Enabled) {
|
||||
val disabledSourceIds = preferences.disabledSources().get()
|
||||
sourceAlpha.filter { it.id.toString() !in disabledSourceIds } +
|
||||
|
@ -58,11 +58,11 @@ class SourcePresenter(
|
||||
val pinnedSourceIds = preferences.pinnedSources().get()
|
||||
|
||||
// SY -->
|
||||
val categories = mutableListOf<SourceCategory>()
|
||||
|
||||
preferences.sourcesTabCategories().get().sortedByDescending { it.lowercase() }.forEach {
|
||||
categories.add(SourceCategory(it))
|
||||
}
|
||||
val categories = preferences.sourcesTabCategories().get()
|
||||
.sortedWith(compareByDescending(String.CASE_INSENSITIVE_ORDER, { it }))
|
||||
.map {
|
||||
SourceCategory(it)
|
||||
}
|
||||
|
||||
val sourcesAndCategoriesCombined = preferences.sourcesTabSourcesInCategories().get()
|
||||
val sourcesAndCategories = if (sourcesAndCategoriesCombined.isNotEmpty()) sourcesAndCategoriesCombined.map {
|
||||
|
@ -157,7 +157,7 @@ class SourceFilterSheet(
|
||||
}
|
||||
}
|
||||
}
|
||||
.sortedBy { it.text.toString().lowercase() }
|
||||
.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.text.toString() }))
|
||||
}
|
||||
|
||||
fun hideFilterButton() {
|
||||
|
@ -30,7 +30,7 @@ class RepoPresenter(
|
||||
super.onCreate(savedState)
|
||||
|
||||
preferences.extensionRepos().asFlow().onEach { repos ->
|
||||
this.repos = repos.toList().sortedBy { it.lowercase() }
|
||||
this.repos = repos.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it }))
|
||||
|
||||
Observable.just(this.repos)
|
||||
.map { it.map(::RepoItem) }
|
||||
|
@ -34,7 +34,7 @@ class SourceCategoryPresenter(
|
||||
super.onCreate(savedState)
|
||||
|
||||
preferences.sourcesTabCategories().asFlow().onEach { categories ->
|
||||
this.categories = categories.toList().sortedBy { it.lowercase() }
|
||||
this.categories = categories.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it }))
|
||||
|
||||
Observable.just(this.categories)
|
||||
.map { it.map(::SourceCategoryItem) }
|
||||
|
@ -895,7 +895,7 @@ class LibraryPresenter(
|
||||
}
|
||||
|
||||
val categories = when (groupType) {
|
||||
LibraryGroup.BY_SOURCE -> grouping.sortedBy { it.third.lowercase() }
|
||||
LibraryGroup.BY_SOURCE -> grouping.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.third }))
|
||||
LibraryGroup.BY_TRACK_STATUS, LibraryGroup.BY_STATUS -> grouping.filter { it.second in map.keys }
|
||||
else -> grouping
|
||||
}.map { (_, id, name) ->
|
||||
|
@ -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()
|
||||
|
@ -131,8 +131,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)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user