Hide language tag when only one language is used (#5834)

* Hide lang tag when only one lang used

* Comment the code

Can't be too useless and do nothing, Ghostbear practically wrote the entire PR for me

* Exclude 'all' from counting as a language

Co-Authored-By: Andreas <6576096+ghostbear@users.noreply.github.com>

* Use existing Preferences directly from Presenter

* Replace regex with an existing value

Co-authored-by: Andreas <6576096+ghostbear@users.noreply.github.com>
(cherry picked from commit 763bd54707ce48ef67a0d5062cfbe014675ef522)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt
This commit is contained in:
Soitora 2021-09-04 21:04:40 +02:00 committed by Jobobby04
parent b304082ca6
commit 3cb05b1442

View File

@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.source.online.MetadataSource
import eu.kanade.tachiyomi.source.online.all.MergedSource
import eu.kanade.tachiyomi.ui.base.controller.getMainAppBarHeight
import eu.kanade.tachiyomi.ui.manga.MangaController
import eu.kanade.tachiyomi.util.lang.launchUI
@ -334,13 +335,35 @@ class MangaInfoHeaderAdapter(
// If manga source is known update source TextView.
val mangaSource = source?.toString()
with(binding.mangaSource) {
// SY -->
if (source?.id == MERGED_SOURCE_ID) {
text = mergedMangaReferences.map {
sourceManager.getOrStub(it.mangaSourceId).toString()
}.distinct().joinToString()
} else /* SY <-- */ if (mangaSource != null) {
text = mangaSource
if (mangaSource != null) {
val preferences = controller.presenter.preferences
val enabledLanguages = preferences.enabledLanguages().get()
.filterNot { it == "all" }
val isMergedSource = source is MergedSource
text = if (enabledLanguages.size == 1) {
// SY -->
if (isMergedSource) {
getMergedSourcesString(enabledLanguages, true)
}
// For edge cases where user disables a source they got manga of in their library.
else /* SY <-- */ if (source.lang !in enabledLanguages) {
source.toString()
} else {
// Hide the language tag when only one language is used.
source.name
}
} else {
// Display the language tag when multiple languages are used.
if (isMergedSource) {
getMergedSourcesString(enabledLanguages, false)
} else {
source.toString()
}
}
setOnClickListener {
controller.performSearch(sourceManager.getOrStub(source.id).name)
}
@ -486,6 +509,23 @@ class MangaInfoHeaderAdapter(
}
// SY -->
private fun getMergedSourcesString(enabledLangs: List<String>, onlyName: Boolean = false): String {
return if (onlyName) {
mergedMangaReferences.map {
val source = sourceManager.getOrStub(it.mangaSourceId)
if (source.lang !in enabledLangs) {
source.toString()
} else {
source.name
}
}.distinct().joinToString()
} else {
mergedMangaReferences.map {
sourceManager.getOrStub(it.mangaSourceId).toString()
}.distinct().joinToString()
}
}
private fun setChipsWithNamespace(genre: List<String>?, meta: RaisedSearchMetadata?) {
val namespaceTags = when {
meta != null -> {