Respect the altTitlesInDesc
preference (MD) (#1283)
* Respect the `altTitlesInDesc` preference (MD) * Replace hardcoded "Alternative Titles" with localized string
This commit is contained in:
parent
788d3797cb
commit
dee543c7c5
@ -89,6 +89,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
private fun blockedUploaders() = sourcePreferences.getString(getBlockedUploaderPrefKey(mdLang.lang), "").orEmpty()
|
private fun blockedUploaders() = sourcePreferences.getString(getBlockedUploaderPrefKey(mdLang.lang), "").orEmpty()
|
||||||
private fun coverQuality() = sourcePreferences.getString(getCoverQualityPrefKey(mdLang.lang), "").orEmpty()
|
private fun coverQuality() = sourcePreferences.getString(getCoverQualityPrefKey(mdLang.lang), "").orEmpty()
|
||||||
private fun tryUsingFirstVolumeCover() = sourcePreferences.getBoolean(getTryUsingFirstVolumeCoverKey(mdLang.lang), false)
|
private fun tryUsingFirstVolumeCover() = sourcePreferences.getBoolean(getTryUsingFirstVolumeCoverKey(mdLang.lang), false)
|
||||||
|
private fun altTitlesInDesc() = sourcePreferences.getBoolean(getAltTitlesInDescKey(mdLang.lang), false)
|
||||||
|
|
||||||
private val mangadexService by lazy {
|
private val mangadexService by lazy {
|
||||||
MangaDexService(client)
|
MangaDexService(client)
|
||||||
@ -191,11 +192,11 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
|
|
||||||
@Deprecated("Use the 1.x API instead", replaceWith = ReplaceWith("getMangaDetails"))
|
@Deprecated("Use the 1.x API instead", replaceWith = ReplaceWith("getMangaDetails"))
|
||||||
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
||||||
return mangaHandler.fetchMangaDetailsObservable(manga, id, coverQuality(), tryUsingFirstVolumeCover())
|
return mangaHandler.fetchMangaDetailsObservable(manga, id, coverQuality(), tryUsingFirstVolumeCover(), altTitlesInDesc())
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getMangaDetails(manga: SManga): SManga {
|
override suspend fun getMangaDetails(manga: SManga): SManga {
|
||||||
return mangaHandler.getMangaDetails(manga, id, coverQuality(), tryUsingFirstVolumeCover())
|
return mangaHandler.getMangaDetails(manga, id, coverQuality(), tryUsingFirstVolumeCover(), altTitlesInDesc())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated("Use the 1.x API instead", replaceWith = ReplaceWith("getChapterList"))
|
@Deprecated("Use the 1.x API instead", replaceWith = ReplaceWith("getChapterList"))
|
||||||
@ -241,7 +242,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
override fun newMetaInstance() = MangaDexSearchMetadata()
|
override fun newMetaInstance() = MangaDexSearchMetadata()
|
||||||
|
|
||||||
override suspend fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Triple<MangaDto, List<String>, StatisticsMangaDto>) {
|
override suspend fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Triple<MangaDto, List<String>, StatisticsMangaDto>) {
|
||||||
apiMangaParser.parseIntoMetadata(metadata, input.first, input.second, input.third, null, coverQuality())
|
apiMangaParser.parseIntoMetadata(metadata, input.first, input.second, input.third, null, coverQuality(), altTitlesInDesc())
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoginSource methods
|
// LoginSource methods
|
||||||
@ -348,5 +349,11 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
|||||||
fun getTryUsingFirstVolumeCoverKey(dexLang: String): String {
|
fun getTryUsingFirstVolumeCoverKey(dexLang: String): String {
|
||||||
return "${tryUsingFirstVolumeCover}_$dexLang"
|
return "${tryUsingFirstVolumeCover}_$dexLang"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private const val altTitlesInDesc = "altTitlesInDesc"
|
||||||
|
|
||||||
|
fun getAltTitlesInDescKey(dexLang: String): String {
|
||||||
|
return "${altTitlesInDesc}_$dexLang"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@ class ApiMangaParser(
|
|||||||
statistics: StatisticsMangaDto?,
|
statistics: StatisticsMangaDto?,
|
||||||
coverFileName: String?,
|
coverFileName: String?,
|
||||||
coverQuality: String,
|
coverQuality: String,
|
||||||
|
altTitlesInDesc: Boolean,
|
||||||
): SManga {
|
): SManga {
|
||||||
val mangaId = getManga.await(manga.url, sourceId)?.id
|
val mangaId = getManga.await(manga.url, sourceId)?.id
|
||||||
val metadata = if (mangaId != null) {
|
val metadata = if (mangaId != null) {
|
||||||
@ -52,7 +53,7 @@ class ApiMangaParser(
|
|||||||
newMetaInstance()
|
newMetaInstance()
|
||||||
}
|
}
|
||||||
|
|
||||||
parseIntoMetadata(metadata, input, simpleChapters, statistics, coverFileName, coverQuality)
|
parseIntoMetadata(metadata, input, simpleChapters, statistics, coverFileName, coverQuality, altTitlesInDesc)
|
||||||
if (mangaId != null) {
|
if (mangaId != null) {
|
||||||
metadata.mangaId = mangaId
|
metadata.mangaId = mangaId
|
||||||
insertFlatMetadata.await(metadata.flatten())
|
insertFlatMetadata.await(metadata.flatten())
|
||||||
@ -68,6 +69,7 @@ class ApiMangaParser(
|
|||||||
statistics: StatisticsMangaDto?,
|
statistics: StatisticsMangaDto?,
|
||||||
coverFileName: String?,
|
coverFileName: String?,
|
||||||
coverQuality: String,
|
coverQuality: String,
|
||||||
|
altTitlesInDesc: Boolean,
|
||||||
) {
|
) {
|
||||||
with(metadata) {
|
with(metadata) {
|
||||||
try {
|
try {
|
||||||
@ -88,13 +90,14 @@ class ApiMangaParser(
|
|||||||
MdUtil.cdnCoverUrl(mangaDto.data.id, "$coverFileName$coverQuality")
|
MdUtil.cdnCoverUrl(mangaDto.data.id, "$coverFileName$coverQuality")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val rawDesc = MdUtil.getFromLangMap(
|
||||||
description = MdUtil.cleanDescription(
|
|
||||||
MdUtil.getFromLangMap(
|
|
||||||
langMap = mangaAttributesDto.description.asMdMap(),
|
langMap = mangaAttributesDto.description.asMdMap(),
|
||||||
currentLang = lang,
|
currentLang = lang,
|
||||||
originalLanguage = mangaAttributesDto.originalLanguage,
|
originalLanguage = mangaAttributesDto.originalLanguage,
|
||||||
).orEmpty(),
|
).orEmpty()
|
||||||
|
|
||||||
|
description = MdUtil.cleanDescription(
|
||||||
|
if (altTitlesInDesc) MdUtil.addAltTitleToDesc(rawDesc, altTitles) else rawDesc,
|
||||||
)
|
)
|
||||||
|
|
||||||
authors = mangaRelationshipsDto.filter { relationshipDto ->
|
authors = mangaRelationshipsDto.filter { relationshipDto ->
|
||||||
|
@ -28,6 +28,7 @@ class MangaHandler(
|
|||||||
sourceId: Long,
|
sourceId: Long,
|
||||||
coverQuality: String,
|
coverQuality: String,
|
||||||
tryUsingFirstVolumeCover: Boolean,
|
tryUsingFirstVolumeCover: Boolean,
|
||||||
|
altTitlesInDesc: Boolean,
|
||||||
): SManga {
|
): SManga {
|
||||||
return coroutineScope {
|
return coroutineScope {
|
||||||
val mangaId = MdUtil.getMangaId(manga.url)
|
val mangaId = MdUtil.getMangaId(manga.url)
|
||||||
@ -53,13 +54,14 @@ class MangaHandler(
|
|||||||
statistics.await(),
|
statistics.await(),
|
||||||
coverFileName?.await(),
|
coverFileName?.await(),
|
||||||
coverQuality,
|
coverQuality,
|
||||||
|
altTitlesInDesc,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fetchMangaDetailsObservable(manga: SManga, sourceId: Long, coverQuality: String, tryUsingFirstVolumeCover: Boolean): Observable<SManga> {
|
fun fetchMangaDetailsObservable(manga: SManga, sourceId: Long, coverQuality: String, tryUsingFirstVolumeCover: Boolean, altTitlesInDesc: Boolean): Observable<SManga> {
|
||||||
return runAsObservable {
|
return runAsObservable {
|
||||||
getMangaDetails(manga, sourceId, coverQuality, tryUsingFirstVolumeCover)
|
getMangaDetails(manga, sourceId, coverQuality, tryUsingFirstVolumeCover, altTitlesInDesc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package exh.md.utils
|
package exh.md.utils
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
import eu.kanade.domain.source.service.SourcePreferences
|
import eu.kanade.domain.source.service.SourcePreferences
|
||||||
import eu.kanade.domain.track.service.TrackPreferences
|
import eu.kanade.domain.track.service.TrackPreferences
|
||||||
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.track.mdlist.MdList
|
import eu.kanade.tachiyomi.data.track.mdlist.MdList
|
||||||
import eu.kanade.tachiyomi.data.track.myanimelist.dto.MALOAuth
|
import eu.kanade.tachiyomi.data.track.myanimelist.dto.MALOAuth
|
||||||
import eu.kanade.tachiyomi.network.POST
|
import eu.kanade.tachiyomi.network.POST
|
||||||
@ -256,5 +258,15 @@ class MdUtil {
|
|||||||
return jsonParser.encodeToString(body)
|
return jsonParser.encodeToString(body)
|
||||||
.toRequestBody("application/json".toMediaType())
|
.toRequestBody("application/json".toMediaType())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun addAltTitleToDesc(description: String, altTitles: List<String>?): String {
|
||||||
|
return if (altTitles.isNullOrEmpty()) {
|
||||||
|
description
|
||||||
|
} else {
|
||||||
|
val altTitlesDesc = altTitles
|
||||||
|
.joinToString("\n", "${Injekt.get<Application>().getString(R.string.alt_titles)}:\n") { "• $it" }
|
||||||
|
description + (if (description.isBlank()) "" else "\n\n") + altTitlesDesc
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -679,6 +679,7 @@
|
|||||||
<string name="mangadex_push_favorites_to_mangadex_summary">Syncs any non MdList tracked entries to MangaDex as reading.</string>
|
<string name="mangadex_push_favorites_to_mangadex_summary">Syncs any non MdList tracked entries to MangaDex as reading.</string>
|
||||||
<string name="mangadex_similar">MangaDex similar</string>
|
<string name="mangadex_similar">MangaDex similar</string>
|
||||||
<string name="community_recommendations">Community recommendations</string>
|
<string name="community_recommendations">Community recommendations</string>
|
||||||
|
<string name="alt_titles">Alternative Titles</string>
|
||||||
|
|
||||||
<!-- Scanlator filters -->
|
<!-- Scanlator filters -->
|
||||||
<string name="select_scanlators">Scanlator groups to show</string>
|
<string name="select_scanlators">Scanlator groups to show</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user