pull/2508/head
Horis 2 years ago
parent 1cc8288ace
commit 2f19422167
  1. 13
      app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt
  2. 11
      app/src/main/java/io/legado/app/ui/browser/WebViewModel.kt

@ -34,6 +34,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
private val imagePathKey = "imagePath" private val imagePathKey = "imagePath"
private var customWebViewCallback: WebChromeClient.CustomViewCallback? = null private var customWebViewCallback: WebChromeClient.CustomViewCallback? = null
private var webPic: String? = null private var webPic: String? = null
private var isCloudflareChallenge = false
private val saveImage = registerForActivityResult(HandleFileContract()) { private val saveImage = registerForActivityResult(HandleFileContract()) {
it.uri?.let { uri -> it.uri?.let { uri ->
ACache.get().put(imagePathKey, uri.toString()) ACache.get().put(imagePathKey, uri.toString())
@ -68,7 +69,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
R.id.menu_copy_url -> sendToClip(viewModel.baseUrl) R.id.menu_copy_url -> sendToClip(viewModel.baseUrl)
R.id.menu_ok -> { R.id.menu_ok -> {
if (viewModel.sourceVerificationEnable) { if (viewModel.sourceVerificationEnable) {
viewModel.saveVerificationResult { viewModel.saveVerificationResult(intent) {
finish() finish()
} }
} else { } else {
@ -226,6 +227,16 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
} else { } else {
binding.titleBar.title = intent.getStringExtra("title") binding.titleBar.title = intent.getStringExtra("title")
} }
if (title == "Just a moment...") {
isCloudflareChallenge = true
}
if (isCloudflareChallenge && title != "Just a moment...") {
if (viewModel.sourceVerificationEnable) {
viewModel.saveVerificationResult(intent) {
finish()
}
}
}
} }
} }

@ -8,6 +8,7 @@ import android.webkit.URLUtil
import androidx.documentfile.provider.DocumentFile import androidx.documentfile.provider.DocumentFile
import io.legado.app.base.BaseViewModel import io.legado.app.base.BaseViewModel
import io.legado.app.constant.AppConst import io.legado.app.constant.AppConst
import io.legado.app.data.appDb
import io.legado.app.exception.NoStackTraceException import io.legado.app.exception.NoStackTraceException
import io.legado.app.help.CacheManager import io.legado.app.help.CacheManager
import io.legado.app.help.IntentData import io.legado.app.help.IntentData
@ -83,11 +84,17 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
} }
} }
fun saveVerificationResult(success: () -> Unit) { fun saveVerificationResult(intent: Intent, success: () -> Unit) {
execute { execute {
if (sourceVerificationEnable) { if (sourceVerificationEnable) {
val url = intent.getStringExtra("url")!!
val source = appDb.bookSourceDao.getBookSource(sourceOrigin)
val key = "${sourceOrigin}_verificationResult" val key = "${sourceOrigin}_verificationResult"
html = AnalyzeUrl(baseUrl, headerMapF = headerMap).getStrResponseAwait(useWebView = false).body html = AnalyzeUrl(
url,
headerMapF = headerMap,
source = source
).getStrResponseAwait(useWebView = false).body
CacheManager.putMemory(key, html ?: "") CacheManager.putMemory(key, html ?: "")
} }
}.onSuccess { }.onSuccess {

Loading…
Cancel
Save