收拢验证结果获取与设置逻辑
This commit is contained in:
@@ -20,7 +20,7 @@ object SourceVerificationHelp {
|
|||||||
private val waitTime = 1.minutes.inWholeNanoseconds
|
private val waitTime = 1.minutes.inWholeNanoseconds
|
||||||
|
|
||||||
private fun getKey(source: BaseSource) = getKey(source.getKey())
|
private fun getKey(source: BaseSource) = getKey(source.getKey())
|
||||||
fun getKey(sourceKey: String) = "${sourceKey}_verificationResult"
|
private fun getKey(sourceKey: String) = "${sourceKey}_verificationResult"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取书源验证结果
|
* 获取书源验证结果
|
||||||
@@ -35,22 +35,21 @@ object SourceVerificationHelp {
|
|||||||
source
|
source
|
||||||
?: throw NoStackTraceException("getVerificationResult parameter source cannot be null")
|
?: throw NoStackTraceException("getVerificationResult parameter source cannot be null")
|
||||||
|
|
||||||
val key = getKey(source)
|
clearResult(source.getKey())
|
||||||
CacheManager.delete(key)
|
|
||||||
|
|
||||||
if (!useBrowser) {
|
if (!useBrowser) {
|
||||||
appCtx.startActivity<VerificationCodeActivity> {
|
appCtx.startActivity<VerificationCodeActivity> {
|
||||||
putExtra("imageUrl", url)
|
putExtra("imageUrl", url)
|
||||||
putExtra("sourceOrigin", source.getKey())
|
putExtra("sourceOrigin", source.getKey())
|
||||||
putExtra("sourceName", source.getTag())
|
putExtra("sourceName", source.getTag())
|
||||||
IntentData.put(key, Thread.currentThread())
|
IntentData.put(getKey(source), Thread.currentThread())
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
startBrowser(source, url, title, true)
|
startBrowser(source, url, title, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
var waitUserInput = false
|
var waitUserInput = false
|
||||||
while (CacheManager.get(key) == null) {
|
while (getResult(source.getKey()) == null) {
|
||||||
if (!waitUserInput) {
|
if (!waitUserInput) {
|
||||||
AppLog.putDebug("等待返回验证结果...")
|
AppLog.putDebug("等待返回验证结果...")
|
||||||
waitUserInput = true
|
waitUserInput = true
|
||||||
@@ -58,7 +57,7 @@ object SourceVerificationHelp {
|
|||||||
LockSupport.parkNanos(this, waitTime)
|
LockSupport.parkNanos(this, waitTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
return CacheManager.get(key)!!.let {
|
return getResult(source.getKey())!!.let {
|
||||||
it.ifBlank {
|
it.ifBlank {
|
||||||
throw NoStackTraceException("验证结果为空")
|
throw NoStackTraceException("验证结果为空")
|
||||||
}
|
}
|
||||||
@@ -89,9 +88,21 @@ object SourceVerificationHelp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun checkResult(key: String) {
|
fun checkResult(sourceKey: String) {
|
||||||
CacheManager.get(key) ?: CacheManager.putMemory(key, "")
|
getResult(sourceKey) ?: setResult(sourceKey, "")
|
||||||
val thread = IntentData.get<Thread>(key)
|
val thread = IntentData.get<Thread>(getKey(sourceKey))
|
||||||
LockSupport.unpark(thread)
|
LockSupport.unpark(thread)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setResult(sourceKey: String, result: String?) {
|
||||||
|
CacheManager.putMemory(getKey(sourceKey), result ?: "")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getResult(sourceKey: String): String? {
|
||||||
|
return CacheManager.get(getKey(sourceKey))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun clearResult(sourceKey: String) {
|
||||||
|
CacheManager.delete(getKey(sourceKey))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
|
|||||||
}
|
}
|
||||||
|
|
||||||
private var sourceOrigin: String? = null
|
private var sourceOrigin: String? = null
|
||||||
private var key = ""
|
|
||||||
|
|
||||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?): Unit = binding.run {
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?): Unit = binding.run {
|
||||||
initMenu()
|
initMenu()
|
||||||
@@ -65,7 +64,6 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
|
|||||||
toolBar.setBackgroundColor(primaryColor)
|
toolBar.setBackgroundColor(primaryColor)
|
||||||
toolBar.subtitle = arguments.getString("sourceName")
|
toolBar.subtitle = arguments.getString("sourceName")
|
||||||
sourceOrigin = arguments.getString("sourceOrigin")
|
sourceOrigin = arguments.getString("sourceOrigin")
|
||||||
key = SourceVerificationHelp.getKey(sourceOrigin!!)
|
|
||||||
val imageUrl = arguments.getString("imageUrl") ?: return@run
|
val imageUrl = arguments.getString("imageUrl") ?: return@run
|
||||||
loadImage(imageUrl, sourceOrigin)
|
loadImage(imageUrl, sourceOrigin)
|
||||||
verificationCodeImageView.setOnClickListener {
|
verificationCodeImageView.setOnClickListener {
|
||||||
@@ -119,7 +117,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
|
|||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.menu_ok -> {
|
R.id.menu_ok -> {
|
||||||
val verificationCode = binding.verificationCode.text.toString()
|
val verificationCode = binding.verificationCode.text.toString()
|
||||||
CacheManager.putMemory(key, verificationCode)
|
SourceVerificationHelp.setResult(sourceOrigin!!, verificationCode)
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -127,7 +125,7 @@ class VerificationCodeDialog() : BaseDialogFragment(R.layout.dialog_verification
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
SourceVerificationHelp.checkResult(key)
|
SourceVerificationHelp.checkResult(sourceOrigin!!)
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
activity?.finish()
|
activity?.finish()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun finish() {
|
override fun finish() {
|
||||||
SourceVerificationHelp.checkResult(viewModel.key)
|
SourceVerificationHelp.checkResult(viewModel.sourceOrigin)
|
||||||
super.finish()
|
super.finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
val headerMap: HashMap<String, String> = hashMapOf()
|
val headerMap: HashMap<String, String> = hashMapOf()
|
||||||
var sourceVerificationEnable: Boolean = false
|
var sourceVerificationEnable: Boolean = false
|
||||||
var sourceOrigin: String = ""
|
var sourceOrigin: String = ""
|
||||||
var key = ""
|
|
||||||
|
|
||||||
fun initData(
|
fun initData(
|
||||||
intent: Intent,
|
intent: Intent,
|
||||||
@@ -41,7 +40,6 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
val url = intent.getStringExtra("url")
|
val url = intent.getStringExtra("url")
|
||||||
?: throw NoStackTraceException("url不能为空")
|
?: throw NoStackTraceException("url不能为空")
|
||||||
sourceOrigin = intent.getStringExtra("sourceOrigin") ?: ""
|
sourceOrigin = intent.getStringExtra("sourceOrigin") ?: ""
|
||||||
key = SourceVerificationHelp.getKey(sourceOrigin)
|
|
||||||
sourceVerificationEnable = intent.getBooleanExtra("sourceVerificationEnable", false)
|
sourceVerificationEnable = intent.getBooleanExtra("sourceVerificationEnable", false)
|
||||||
val headerMapF = IntentData.get<Map<String, String>>(url)
|
val headerMapF = IntentData.get<Map<String, String>>(url)
|
||||||
val analyzeUrl = AnalyzeUrl(url, headerMapF = headerMapF)
|
val analyzeUrl = AnalyzeUrl(url, headerMapF = headerMapF)
|
||||||
@@ -96,13 +94,12 @@ class WebViewModel(application: Application) : BaseViewModel(application) {
|
|||||||
if (sourceVerificationEnable) {
|
if (sourceVerificationEnable) {
|
||||||
val url = intent.getStringExtra("url")!!
|
val url = intent.getStringExtra("url")!!
|
||||||
val source = appDb.bookSourceDao.getBookSource(sourceOrigin)
|
val source = appDb.bookSourceDao.getBookSource(sourceOrigin)
|
||||||
val key = "${sourceOrigin}_verificationResult"
|
|
||||||
html = AnalyzeUrl(
|
html = AnalyzeUrl(
|
||||||
url,
|
url,
|
||||||
headerMapF = headerMap,
|
headerMapF = headerMap,
|
||||||
source = source
|
source = source
|
||||||
).getStrResponseAwait(useWebView = false).body
|
).getStrResponseAwait(useWebView = false).body
|
||||||
CacheManager.putMemory(key, html ?: "")
|
SourceVerificationHelp.setResult(sourceOrigin, html ?: "")
|
||||||
}
|
}
|
||||||
}.onSuccess {
|
}.onSuccess {
|
||||||
success.invoke()
|
success.invoke()
|
||||||
|
|||||||
Reference in New Issue
Block a user