Bring back merge manga sources string

This commit is contained in:
Jobobby04 2022-07-14 15:41:41 -04:00
parent 33f9b15891
commit 4dda69ac40
2 changed files with 25 additions and 26 deletions

View File

@ -359,7 +359,7 @@ private fun MangaScreenSmallImpl(
title = state.manga.title,
author = state.manga.author,
artist = state.manga.artist,
sourceName = remember { state.source.getNameForMangaInfo() },
sourceName = remember { state.source.getNameForMangaInfo(state.mergedData) },
isStubSource = remember { state.source is SourceManager.StubSource },
coverDataProvider = { state.manga },
status = state.manga.status,
@ -624,7 +624,7 @@ fun MangaScreenLargeImpl(
title = state.manga.title,
author = state.manga.author,
artist = state.manga.artist,
sourceName = remember { state.source.getNameForMangaInfo() },
sourceName = remember { state.source.getNameForMangaInfo(state.mergedData) },
isStubSource = remember { state.source is SourceManager.StubSource },
coverDataProvider = { state.manga },
status = state.manga.status,

View File

@ -12,8 +12,8 @@ import eu.kanade.tachiyomi.source.model.toMangaInfo
import eu.kanade.tachiyomi.source.model.toPageUrl
import eu.kanade.tachiyomi.source.model.toSChapter
import eu.kanade.tachiyomi.source.model.toSManga
import eu.kanade.tachiyomi.ui.manga.MergedMangaData
import eu.kanade.tachiyomi.util.lang.awaitSingle
import exh.source.MERGED_SOURCE_ID
import rx.Observable
import tachiyomi.source.model.ChapterInfo
import tachiyomi.source.model.MangaInfo
@ -108,41 +108,20 @@ fun Source.getPreferenceKey(): String = "source_$id"
fun Source.toSourceData(): SourceData = SourceData(id = id, lang = lang, name = name)
fun Source.getNameForMangaInfo(source: Source, getMergedSourcesString: (List<String>, Boolean) -> String): String {
val preferences = Injekt.get<PreferencesHelper>()
val enabledLanguages = preferences.enabledLanguages().get()
.filterNot { it in listOf("all", "other") }
// SY -->
val isMergedSource = source.id == MERGED_SOURCE_ID
// SY <--
val hasOneActiveLanguages = enabledLanguages.size == 1
val isInEnabledLanguages = source.lang in enabledLanguages
return when {
// SY -->
isMergedSource && hasOneActiveLanguages -> getMergedSourcesString(
enabledLanguages,
true,
)
isMergedSource -> getMergedSourcesString(
enabledLanguages,
false,
)
// SY <--
// For edge cases where user disables a source they got manga of in their library.
hasOneActiveLanguages && !isInEnabledLanguages -> toString()
// Hide the language tag when only one language is used.
hasOneActiveLanguages && isInEnabledLanguages -> name
else -> toString()
}
}
fun Source.getNameForMangaInfo(): String {
fun Source.getNameForMangaInfo(mergeData: MergedMangaData?): String {
val preferences = Injekt.get<PreferencesHelper>()
val enabledLanguages = preferences.enabledLanguages().get()
.filterNot { it in listOf("all", "other") }
val hasOneActiveLanguages = enabledLanguages.size == 1
val isInEnabledLanguages = lang in enabledLanguages
return when {
// SY -->
mergeData != null -> getMergedSourcesString(
mergeData,
enabledLanguages,
hasOneActiveLanguages,
)
// SY <--
// For edge cases where user disables a source they got manga of in their library.
hasOneActiveLanguages && !isInEnabledLanguages -> toString()
// Hide the language tag when only one language is used.
@ -151,4 +130,24 @@ fun Source.getNameForMangaInfo(): String {
}
}
// SY -->
private fun getMergedSourcesString(
mergeData: MergedMangaData,
enabledLangs: List<String>,
onlyName: Boolean,
): String {
return if (onlyName) {
mergeData.sources.joinToString { source ->
if (source.lang !in enabledLangs) {
source.toString()
} else {
source.name
}
}
} else {
mergeData.sources.joinToString()
}
}
// SY <--
fun Source.isLocalOrStub(): Boolean = id == LocalSource.ID || this is SourceManager.StubSource