This commit is contained in:
Horis
2025-03-25 23:00:19 +08:00
parent 450065aec9
commit 4af4644ea1
13 changed files with 21 additions and 23 deletions
@@ -28,7 +28,7 @@ import io.legado.app.utils.getFile
import io.legado.app.utils.isContentScheme import io.legado.app.utils.isContentScheme
import io.legado.app.utils.onEachParallel import io.legado.app.utils.onEachParallel
import io.legado.app.utils.postEvent import io.legado.app.utils.postEvent
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.ensureActive import kotlinx.coroutines.ensureActive
@@ -12,7 +12,7 @@ import io.legado.app.exception.NoStackTraceException
import io.legado.app.model.ReadManga import io.legado.app.model.ReadManga
import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.model.analyzeRule.AnalyzeUrl
import io.legado.app.utils.ImageUtils import io.legado.app.utils.ImageUtils
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import java.io.InputStream import java.io.InputStream
@@ -17,7 +17,7 @@ import io.legado.app.help.source.SourceHelp
import io.legado.app.model.ReadManga import io.legado.app.model.ReadManga
import io.legado.app.utils.ImageUtils import io.legado.app.utils.ImageUtils
import io.legado.app.utils.isWifiConnect import io.legado.app.utils.isWifiConnect
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import okhttp3.Call import okhttp3.Call
import okhttp3.Request import okhttp3.Request
@@ -63,8 +63,10 @@ class OkHttpStreamFetcher(
val headerMap = HashMap<String, String>() val headerMap = HashMap<String, String>()
options.get(OkHttpModelLoader.sourceOriginOption)?.let { sourceUrl -> options.get(OkHttpModelLoader.sourceOriginOption)?.let { sourceUrl ->
source = SourceHelp.getSource(sourceUrl) source = SourceHelp.getSource(sourceUrl)
source?.getHeaderMap(true)?.let { runScriptWithContext(coroutineContext) {
headerMap.putAll(it) source?.getHeaderMap(true)?.let {
headerMap.putAll(it)
}
} }
if (source?.enabledCookieJar == true) { if (source?.enabledCookieJar == true) {
headerMap[cookieJarHeader] = "1" headerMap[cookieJarHeader] = "1"
@@ -11,7 +11,7 @@ import io.legado.app.utils.MD5Utils
import io.legado.app.utils.fromJsonArray import io.legado.app.utils.fromJsonArray
import io.legado.app.utils.isJsonArray import io.legado.app.utils.isJsonArray
import io.legado.app.utils.printOnDebug import io.legado.app.utils.printOnDebug
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
@@ -4,7 +4,7 @@ import io.legado.app.data.entities.RssSource
import io.legado.app.utils.ACache import io.legado.app.utils.ACache
import io.legado.app.utils.MD5Utils import io.legado.app.utils.MD5Utils
import io.legado.app.utils.NetworkUtils import io.legado.app.utils.NetworkUtils
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@@ -45,7 +45,7 @@ import io.legado.app.utils.isJson
import io.legado.app.utils.isJsonArray import io.legado.app.utils.isJsonArray
import io.legado.app.utils.isJsonObject import io.legado.app.utils.isJsonObject
import io.legado.app.utils.isXml import io.legado.app.utils.isXml
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import io.legado.app.utils.splitNotBlank import io.legado.app.utils.splitNotBlank
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaType
@@ -1296,9 +1296,11 @@ class ReadBookActivity : BaseReadBookActivity(),
}.onSuccess(IO) { }.onSuccess(IO) {
if (it.isAbsUrl()) { if (it.isAbsUrl()) {
startActivity<WebViewActivity> { startActivity<WebViewActivity> {
val bookSource = ReadBook.bookSource
putExtra("title", getString(R.string.chapter_pay)) putExtra("title", getString(R.string.chapter_pay))
putExtra("url", it) putExtra("url", it)
putExtra("sourceOrigin", ReadBook.bookSource?.bookSourceUrl) putExtra("sourceOrigin", bookSource?.bookSourceUrl)
putExtra("sourceName", bookSource?.bookSourceName)
} }
} else if (it.isTrue()) { } else if (it.isTrue()) {
//购买成功后刷新目录 //购买成功后刷新目录
@@ -25,7 +25,7 @@ import io.legado.app.utils.dpToPx
import io.legado.app.utils.isAbsUrl import io.legado.app.utils.isAbsUrl
import io.legado.app.utils.openUrl import io.legado.app.utils.openUrl
import io.legado.app.utils.printOnDebug import io.legado.app.utils.printOnDebug
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import io.legado.app.utils.setLayout import io.legado.app.utils.setLayout
import io.legado.app.utils.showDialogFragment import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
@@ -6,7 +6,7 @@ import io.legado.app.base.BaseViewModel
import io.legado.app.data.appDb import io.legado.app.data.appDb
import io.legado.app.data.entities.BaseSource import io.legado.app.data.entities.BaseSource
import io.legado.app.exception.NoStackTraceException import io.legado.app.exception.NoStackTraceException
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
class SourceLoginViewModel(application: Application) : BaseViewModel(application) { class SourceLoginViewModel(application: Application) : BaseViewModel(application) {
@@ -16,7 +16,6 @@ import android.webkit.WebSettings
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.BaseFragment import io.legado.app.base.BaseFragment
import io.legado.app.constant.AppConst import io.legado.app.constant.AppConst
@@ -30,7 +29,6 @@ import io.legado.app.utils.longSnackbar
import io.legado.app.utils.openUrl import io.legado.app.utils.openUrl
import io.legado.app.utils.snackbar import io.legado.app.utils.snackbar
import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.launch
class WebViewLoginFragment : BaseFragment(R.layout.fragment_web_view_login) { class WebViewLoginFragment : BaseFragment(R.layout.fragment_web_view_login) {
@@ -146,11 +144,9 @@ class WebViewLoginFragment : BaseFragment(R.layout.fragment_web_view_login) {
} }
private fun loadUrl(source: BaseSource) { private fun loadUrl(source: BaseSource) {
lifecycleScope.launch { val loginUrl = source.loginUrl ?: return
val loginUrl = source.loginUrl ?: return@launch val absoluteUrl = NetworkUtils.getAbsoluteURL(source.getKey(), loginUrl)
val absoluteUrl = NetworkUtils.getAbsoluteURL(source.getKey(), loginUrl) binding.webView.loadUrl(absoluteUrl, viewModel.headerMap)
binding.webView.loadUrl(absoluteUrl, viewModel.headerMap)
}
} }
override fun onDestroy() { override fun onDestroy() {
@@ -4,7 +4,7 @@ import android.app.Application
import io.legado.app.base.BaseViewModel import io.legado.app.base.BaseViewModel
import io.legado.app.data.appDb import io.legado.app.data.appDb
import io.legado.app.data.entities.RssSource import io.legado.app.data.entities.RssSource
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
class RssViewModel(application: Application) : BaseViewModel(application) { class RssViewModel(application: Application) : BaseViewModel(application) {
@@ -21,7 +21,7 @@ import io.legado.app.help.http.newCallResponseBody
import io.legado.app.help.http.okHttpClient import io.legado.app.help.http.okHttpClient
import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.model.analyzeRule.AnalyzeUrl
import io.legado.app.model.rss.Rss import io.legado.app.model.rss.Rss
import io.legado.app.utils.runScriptWithContext import com.script.rhino.runScriptWithContext
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
import io.legado.app.utils.writeBytes import io.legado.app.utils.writeBytes
import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.IO
@@ -1,7 +1,5 @@
package io.legado.app.utils package com.script.rhino
import com.script.rhino.RhinoContext
import com.script.rhino.RhinoScriptEngine
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.supervisorScope import kotlinx.coroutines.supervisorScope