Add Mangadex blocked groups and uploaders extension preference support

This commit is contained in:
Jobobby04 2022-02-01 17:09:20 -05:00
parent ffcb5f6954
commit 2eef81c468
3 changed files with 38 additions and 6 deletions

View File

@ -95,6 +95,8 @@ class MangaDex(delegate: HttpSource, val context: Context) :
private fun dataSaver() = sourcePreferences.getBoolean(getDataSaverPreferenceKey(mdLang.lang), false)
private fun usePort443Only() = sourcePreferences.getBoolean(getStandardHttpsPreferenceKey(mdLang.lang), false)
private fun blockedGroups() = sourcePreferences.getString(getBlockedGroupsPrefKey(mdLang.lang), "").orEmpty()
private fun blockedUploaders() = sourcePreferences.getString(getBlockedGroupsPrefKey(mdLang.lang), "").orEmpty()
private val mangadexService by lazy {
MangaDexService(client)
@ -187,11 +189,11 @@ class MangaDex(delegate: HttpSource, val context: Context) :
}
override fun fetchChapterList(manga: SManga): Observable<List<SChapter>> {
return mangaHandler.fetchChapterListObservable(manga)
return mangaHandler.fetchChapterListObservable(manga, blockedGroups(), blockedUploaders())
}
override suspend fun getChapterList(manga: MangaInfo): List<ChapterInfo> {
return mangaHandler.getChapterList(manga)
return mangaHandler.getChapterList(manga, blockedGroups(), blockedUploaders())
}
override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
@ -316,5 +318,17 @@ class MangaDex(delegate: HttpSource, val context: Context) :
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"
}
}
}

View File

@ -50,14 +50,20 @@ class MangaHandler(
}
}
fun fetchChapterListObservable(manga: SManga): Observable<List<SChapter>> = runAsObservable {
getChapterList(manga.toMangaInfo()).map { it.toSChapter() }
fun fetchChapterListObservable(manga: SManga, blockedGroups: String, blockedUploaders: String): Observable<List<SChapter>> = runAsObservable {
getChapterList(manga.toMangaInfo(), blockedGroups, blockedUploaders).map { it.toSChapter() }
}
suspend fun getChapterList(manga: MangaInfo): List<ChapterInfo> {
suspend fun getChapterList(manga: MangaInfo, blockedGroups: String, blockedUploaders: String): List<ChapterInfo> {
return withIOContext {
val results = mdListCall {
service.viewChapters(MdUtil.getMangaId(manga.key), lang, it)
service.viewChapters(
MdUtil.getMangaId(manga.key),
lang,
it,
blockedGroups,
blockedUploaders
)
}
val groupMap = getGroupMap(results)

View File

@ -17,6 +17,8 @@ import exh.md.dto.StatisticsDto
import exh.md.utils.MdApi
import exh.md.utils.MdConstants
import exh.md.utils.MdUtil
import exh.util.dropEmpty
import exh.util.trimAll
import okhttp3.CacheControl
import okhttp3.Headers
import okhttp3.HttpUrl.Companion.toHttpUrl
@ -106,10 +108,14 @@ class MangaDexService(
).await().parseAs(MdUtil.jsonParser)
}
private fun String.splitString() = replace("\n", "").split(',').trimAll().dropEmpty()
suspend fun viewChapters(
id: String,
translatedLanguage: String,
offset: Int,
blockedGroups: String,
blockedUploaders: String
): ChapterListDto {
val url = MdApi.manga.toHttpUrl()
.newBuilder()
@ -126,6 +132,12 @@ class MangaDexService(
addQueryParameter("contentRating[]", "pornographic")
addQueryParameter("translatedLanguage[]", translatedLanguage)
addQueryParameter("offset", offset.toString())
blockedGroups.splitString().forEach {
addQueryParameter("excludedGroups[]", it)
}
blockedUploaders.splitString().forEach {
addQueryParameter("excludedUploaders[]", it)
}
}
.build()
.toString()