package eu.kanade.tachiyomi.source import android.graphics.drawable.Drawable import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.tachiyomi.extension.ExtensionManager import tachiyomi.domain.source.model.SourceData import tachiyomi.source.local.LocalSource import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get fun Source.icon(): Drawable? = Injekt.get().getAppIconForSource(this.id) fun Source.getPreferenceKey(): String = "source_$id" fun Source.toSourceData(): SourceData = SourceData(id = id, lang = lang, name = name) fun Source.getNameForMangaInfo( // SY --> mergeSources: List?, enabledLanguages: List = Injekt.get().enabledLanguages().get() .filterNot { it in listOf("all", "other") }, // SY <-- ): String { val hasOneActiveLanguages = enabledLanguages.size == 1 val isInEnabledLanguages = lang in enabledLanguages return when { // SY --> !mergeSources.isNullOrEmpty() -> getMergedSourcesString( mergeSources, 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. hasOneActiveLanguages && isInEnabledLanguages -> name else -> toString() } } // SY --> private fun getMergedSourcesString( mergeSources: List, enabledLangs: List, onlyName: Boolean, ): String { return if (onlyName) { mergeSources.joinToString { source -> if (source.lang !in enabledLangs) { source.toString() } else { source.name } } } else { mergeSources.joinToString() } } // SY <-- fun Source.isLocal(): Boolean = id == LocalSource.ID fun Source.isLocalOrStub(): Boolean = isLocal() || this is SourceManager.StubSource