diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt index 17519d2e3..4ba2c41f9 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt @@ -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(localDetails.inputStream()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt index c0387b694..4c284edbe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt @@ -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()) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterController.kt index c7947610e..a7f7ba6b3 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterController.kt @@ -219,7 +219,8 @@ class SourceFilterController : SettingsController() { } private fun sortedSources(sources: List?): List { - 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 } + diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt index 1573e2be2..dad67288a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt @@ -58,11 +58,11 @@ class SourcePresenter( val pinnedSourceIds = preferences.pinnedSources().get() // SY --> - val categories = mutableListOf() - - 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 { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt index 4e3ab2a9b..ce6a0a046 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt @@ -157,7 +157,7 @@ class SourceFilterSheet( } } } - .sortedBy { it.text.toString().lowercase() } + .sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.text.toString() })) } fun hideFilterButton() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/repos/RepoPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/repos/RepoPresenter.kt index 8f95c111e..b8a095293 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/repos/RepoPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/repos/RepoPresenter.kt @@ -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) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryPresenter.kt index 002fcb0df..f295f0862 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryPresenter.kt @@ -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) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index a9333ac64..526ffc439 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -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) -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/licenses/LicensesController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/licenses/LicensesController.kt index 0dd4b0852..e235c27ad 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/licenses/LicensesController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/licenses/LicensesController.kt @@ -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() diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt index d198bfc2c..1001d55d7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt @@ -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) } }