mirror of
https://github.com/mihonapp/mihon.git
synced 2025-06-27 19:47:51 +02:00
Add MangaDex login
This commit is contained in:
46
app/src/main/java/exh/patch/MangaDexLogin.kt
Normal file
46
app/src/main/java/exh/patch/MangaDexLogin.kt
Normal file
@ -0,0 +1,46 @@
|
||||
package exh.patch
|
||||
|
||||
import android.app.Application
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||
import exh.ui.captcha.BrowserActionActivity
|
||||
import exh.util.interceptAsHtml
|
||||
import okhttp3.HttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
private val HIDE_SCRIPT = """
|
||||
document.querySelector("#forgot_button").style.visibility = "hidden";
|
||||
document.querySelector("#signup_button").style.visibility = "hidden";
|
||||
document.querySelector("#announcement").style.visibility = "hidden";
|
||||
document.querySelector("nav").style.visibility = "hidden";
|
||||
document.querySelector("footer").style.visibility = "hidden";
|
||||
""".trimIndent()
|
||||
|
||||
private fun verifyComplete(url: String): Boolean {
|
||||
return HttpUrl.parse(url)?.let { parsed ->
|
||||
parsed.host() == "mangadex.org" && parsed.pathSegments().none { it.isNotBlank() }
|
||||
} ?: false
|
||||
}
|
||||
|
||||
fun OkHttpClient.Builder.attachMangaDexLogin() =
|
||||
addInterceptor { chain ->
|
||||
val response = chain.proceed(chain.request())
|
||||
if(response.request().url().host() == "mangadex.org") {
|
||||
response.interceptAsHtml { doc ->
|
||||
if (doc.title().trim().equals("Login - MangaDex", true)) {
|
||||
BrowserActionActivity.launchAction(
|
||||
Injekt.get<Application>(),
|
||||
::verifyComplete,
|
||||
HIDE_SCRIPT,
|
||||
"https://mangadex.org/login",
|
||||
"Login",
|
||||
(Injekt.get<SourceManager>().get(2499283573021220255) as? HttpSource)?.headers?.toMultimap()?.mapValues {
|
||||
it.value.joinToString(",")
|
||||
} ?: emptyMap()
|
||||
)
|
||||
}
|
||||
}
|
||||
} else response
|
||||
}
|
Reference in New Issue
Block a user