Merge pull request #1848 from Xwite/master

更新界面 使用startBrowserAwait卡顿的问题
This commit is contained in:
kunfei
2022-05-06 11:27:42 +08:00
committed by GitHub
6 changed files with 54 additions and 51 deletions
@@ -567,14 +567,14 @@ interface JsExtensions {
* 弹窗提示
*/
fun toast(msg: Any?) {
appCtx.toastOnUi(msg.toString())
appCtx.toastOnUi("${getSource()?.getTag()}: ${msg.toString()}")
}
/**
* 弹窗提示 停留时间较长
*/
fun longToast(msg: Any?) {
appCtx.longToastOnUi(msg.toString())
appCtx.longToastOnUi("${getSource()?.getTag()}: ${msg.toString()}")
}
/**
@@ -4,6 +4,8 @@ import android.annotation.SuppressLint
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.view.MenuItem
import androidx.appcompat.widget.Toolbar
import com.bumptech.glide.request.RequestOptions
import io.legado.app.R
import io.legado.app.base.BaseDialogFragment
@@ -13,8 +15,7 @@ import io.legado.app.help.glide.ImageLoader
import io.legado.app.help.glide.OkHttpModelLoader
import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.widget.dialog.PhotoDialog
import io.legado.app.utils.setLayout
import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding
/**
@@ -23,7 +24,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
* val key = "${sourceOrigin ?: ""}_verificationResult"
* CacheManager.get(key)
*/
class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification_code_view) {
class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification_code_view), Toolbar.OnMenuItemClickListener {
constructor(imageUrl: String, sourceOrigin: String? = null) : this() {
arguments = Bundle().apply {
@@ -41,6 +42,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
@SuppressLint("CheckResult")
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
initMenu()
binding.run {
toolBar.setBackgroundColor(primaryColor)
val sourceOrigin = arguments?.getString("sourceOrigin")
@@ -61,17 +63,29 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
showDialogFragment(PhotoDialog(imageUrl, sourceOrigin))
}
}
tvOk.setOnClickListener {
}
}
private fun initMenu() {
binding.toolBar.setOnMenuItemClickListener(this)
binding.toolBar.inflateMenu(R.menu.verification_code)
binding.toolBar.menu.applyTint(requireContext())
}
@SuppressLint("InflateParams")
override fun onMenuItemClick(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_ok -> {
val sourceOrigin = arguments?.getString("sourceOrigin")
val key = "${sourceOrigin}_verificationResult"
val verificationCode = binding.verificationCode.text.toString()
verificationCode.let {
CacheManager.putMemory(key, it)
dismiss()
}
}
tvCancel.setOnClickListener {
dismiss()
}
}
}
return false
}
override fun onDestroy() {
@@ -68,8 +68,9 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
R.id.menu_copy_url -> sendToClip(viewModel.baseUrl)
R.id.menu_ok -> {
if (viewModel.sourceVerificationEnable) {
binding.titleBar.snackbar(R.string.ok)
finish()
viewModel.saveVerificationResult {
finish()
}
}
}
}
@@ -182,9 +183,6 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
override fun onDestroy() {
super.onDestroy()
runBlocking {
viewModel.saveVerificationResult()
}
binding.webView.destroy()
}
@@ -83,11 +83,15 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
}
}
fun saveVerificationResult() {
if (sourceVerificationEnable) {
val key = "${sourceOrigin}_verificationResult"
html = AnalyzeUrl(baseUrl, headerMapF = headerMap).getStrResponse(useWebView = false).body
CacheManager.putMemory(key, html ?: "")
fun saveVerificationResult(success: () -> Unit) {
execute {
if (sourceVerificationEnable) {
val key = "${sourceOrigin}_verificationResult"
html = AnalyzeUrl(baseUrl, headerMapF = headerMap).getStrResponseAwait(useWebView = false).body
CacheManager.putMemory(key, html ?: "")
}
}.onSuccess {
success.invoke()
}
}