Add handling for previously unhandled preferences (delegated MD) (#1524)
* Include romanized titles of the original language in description * Implement handling for `finalChapterInDesc` preference. * Handle `preferExtensionLangTitle` preference when fetching manga details. * Address some warnings, clean up unused code and spotless apply.
This commit is contained in:
@@ -168,17 +168,17 @@ class MdList(id: Long) : BaseTracker(id, "MDList") {
|
||||
trackPreferences.trackToken(this).delete()
|
||||
}
|
||||
|
||||
override suspend fun getMangaMetadata(track: DomainTrack): TrackMangaMetadata? {
|
||||
override suspend fun getMangaMetadata(track: DomainTrack): TrackMangaMetadata {
|
||||
return withIOContext {
|
||||
val mdex = mdex ?: throw MangaDexNotFoundException()
|
||||
val manga = mdex.getMangaMetadata(track.toDbTrack())
|
||||
TrackMangaMetadata(
|
||||
remoteId = 0,
|
||||
title = manga?.title,
|
||||
thumbnailUrl = manga?.thumbnail_url, // Doesn't load the actual cover because of Refer header
|
||||
description = manga?.description,
|
||||
authors = manga?.author,
|
||||
artists = manga?.artist,
|
||||
title = manga.title,
|
||||
thumbnailUrl = manga.thumbnail_url, // Doesn't load the actual cover because of Refer header
|
||||
description = manga.description,
|
||||
authors = manga.author,
|
||||
artists = manga.artist,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,6 +90,8 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
private fun coverQuality() = sourcePreferences.getString(getCoverQualityPrefKey(mdLang.lang), "").orEmpty()
|
||||
private fun tryUsingFirstVolumeCover() = sourcePreferences.getBoolean(getTryUsingFirstVolumeCoverKey(mdLang.lang), false)
|
||||
private fun altTitlesInDesc() = sourcePreferences.getBoolean(getAltTitlesInDescKey(mdLang.lang), false)
|
||||
private fun finalChapterInDesc() = sourcePreferences.getBoolean(getFinalChapterInDescPrefKey(mdLang.lang), false)
|
||||
private fun preferExtensionLangTitle() = sourcePreferences.getBoolean(getPreferExtensionLangTitlePrefKey(mdLang.extLang), true)
|
||||
|
||||
private val mangadexService by lazy {
|
||||
MangaDexService(client)
|
||||
@@ -107,7 +109,7 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
FollowsHandler(mdLang.lang, mangadexAuthService)
|
||||
}
|
||||
private val mangaHandler by lazy {
|
||||
MangaHandler(mdLang.lang, mangadexService, apiMangaParser, followsHandler)
|
||||
MangaHandler(mdLang.lang, mangadexService, apiMangaParser)
|
||||
}
|
||||
private val similarHandler by lazy {
|
||||
SimilarHandler(mdLang.lang, mangadexService, similarService)
|
||||
@@ -192,11 +194,27 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
|
||||
@Deprecated("Use the 1.x API instead", replaceWith = ReplaceWith("getMangaDetails"))
|
||||
override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
|
||||
return mangaHandler.fetchMangaDetailsObservable(manga, id, coverQuality(), tryUsingFirstVolumeCover(), altTitlesInDesc())
|
||||
return mangaHandler.fetchMangaDetailsObservable(
|
||||
manga,
|
||||
id,
|
||||
coverQuality(),
|
||||
tryUsingFirstVolumeCover(),
|
||||
altTitlesInDesc(),
|
||||
finalChapterInDesc(),
|
||||
preferExtensionLangTitle(),
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun getMangaDetails(manga: SManga): SManga {
|
||||
return mangaHandler.getMangaDetails(manga, id, coverQuality(), tryUsingFirstVolumeCover(), altTitlesInDesc())
|
||||
return mangaHandler.getMangaDetails(
|
||||
manga,
|
||||
id,
|
||||
coverQuality(),
|
||||
tryUsingFirstVolumeCover(),
|
||||
altTitlesInDesc(),
|
||||
finalChapterInDesc(),
|
||||
preferExtensionLangTitle(),
|
||||
)
|
||||
}
|
||||
|
||||
@Deprecated("Use the 1.x API instead", replaceWith = ReplaceWith("getChapterList"))
|
||||
@@ -241,8 +259,21 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
|
||||
override fun newMetaInstance() = MangaDexSearchMetadata()
|
||||
|
||||
override suspend fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Triple<MangaDto, List<String>, StatisticsMangaDto>) {
|
||||
apiMangaParser.parseIntoMetadata(metadata, input.first, input.second, input.third, null, coverQuality(), altTitlesInDesc())
|
||||
override suspend fun parseIntoMetadata(
|
||||
metadata: MangaDexSearchMetadata,
|
||||
input: Triple<MangaDto, List<String>, StatisticsMangaDto>,
|
||||
) {
|
||||
apiMangaParser.parseIntoMetadata(
|
||||
metadata,
|
||||
input.first,
|
||||
input.second,
|
||||
input.third,
|
||||
null,
|
||||
coverQuality(),
|
||||
altTitlesInDesc(),
|
||||
finalChapterInDesc(),
|
||||
preferExtensionLangTitle(),
|
||||
)
|
||||
}
|
||||
|
||||
// LoginSource methods
|
||||
@@ -296,10 +327,6 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
return followsHandler.updateRating(track)
|
||||
}
|
||||
|
||||
suspend fun getTrackingAndMangaInfo(track: Track): Pair<Track, MangaDexSearchMetadata?> {
|
||||
return mangaHandler.getTrackingInfo(track)
|
||||
}
|
||||
|
||||
// RandomMangaSource method
|
||||
override suspend fun fetchRandomMangaUrl(): String {
|
||||
return mangaHandler.fetchRandomMangaId()
|
||||
@@ -313,51 +340,62 @@ class MangaDex(delegate: HttpSource, val context: Context) :
|
||||
return similarHandler.getRelated(manga)
|
||||
}
|
||||
|
||||
suspend fun getMangaMetadata(track: Track): SManga? {
|
||||
return mangaHandler.getMangaMetadata(track, id, coverQuality(), tryUsingFirstVolumeCover(), altTitlesInDesc())
|
||||
suspend fun getMangaMetadata(track: Track): SManga {
|
||||
return mangaHandler.getMangaMetadata(
|
||||
track,
|
||||
id,
|
||||
coverQuality(),
|
||||
tryUsingFirstVolumeCover(),
|
||||
altTitlesInDesc(),
|
||||
finalChapterInDesc(),
|
||||
preferExtensionLangTitle(),
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val dataSaverPref = "dataSaverV5"
|
||||
|
||||
fun getDataSaverPreferenceKey(dexLang: String): String {
|
||||
return "${dataSaverPref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val standardHttpsPortPref = "usePort443"
|
||||
|
||||
fun getStandardHttpsPreferenceKey(dexLang: String): String {
|
||||
return "${standardHttpsPortPref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val blockedGroupsPref = "blockedGroups"
|
||||
|
||||
fun getBlockedGroupsPrefKey(dexLang: String): String {
|
||||
return "${blockedGroupsPref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val blockedUploaderPref = "blockedUploader"
|
||||
|
||||
fun getBlockedUploaderPrefKey(dexLang: String): String {
|
||||
return "${blockedUploaderPref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val coverQualityPref = "thumbnailQuality"
|
||||
|
||||
fun getCoverQualityPrefKey(dexLang: String): String {
|
||||
return "${coverQualityPref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val tryUsingFirstVolumeCover = "tryUsingFirstVolumeCover"
|
||||
|
||||
private const val tryUsingFirstVolumeCoverPref = "tryUsingFirstVolumeCover"
|
||||
fun getTryUsingFirstVolumeCoverKey(dexLang: String): String {
|
||||
return "${tryUsingFirstVolumeCover}_$dexLang"
|
||||
return "${tryUsingFirstVolumeCoverPref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val altTitlesInDesc = "altTitlesInDesc"
|
||||
|
||||
private const val altTitlesInDescPref = "altTitlesInDesc"
|
||||
fun getAltTitlesInDescKey(dexLang: String): String {
|
||||
return "${altTitlesInDesc}_$dexLang"
|
||||
return "${altTitlesInDescPref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val finalChapterInDescPref = "finalChapterInDesc"
|
||||
fun getFinalChapterInDescPrefKey(dexLang: String): String {
|
||||
return "${finalChapterInDescPref}_$dexLang"
|
||||
}
|
||||
|
||||
private const val preferExtensionLangTitlePref = "preferExtensionLangTitle"
|
||||
fun getPreferExtensionLangTitlePrefKey(dexLang: String): String {
|
||||
return "${preferExtensionLangTitlePref}_$dexLang"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user