修复前端弹窗失效:完善 PromptDelegate 处理,增加上传日志防抖
This commit is contained in:
parent
62ce781993
commit
a5c5c28425
|
|
@ -418,9 +418,17 @@
|
|||
}
|
||||
}
|
||||
|
||||
var lastUploadTime = 0;
|
||||
// 上传日志
|
||||
function callUploadLogs() {
|
||||
var now = Date.now();
|
||||
if (now - lastUploadTime < 30000) {
|
||||
alert("请勿频繁上传,请半分钟后再试");
|
||||
return;
|
||||
}
|
||||
if (window.android && window.android.uploadLogs) {
|
||||
lastUploadTime = now;
|
||||
alert("开始上传日志...");
|
||||
window.android.uploadLogs();
|
||||
} else {
|
||||
alert("上传日志接口不可用");
|
||||
|
|
|
|||
|
|
@ -231,17 +231,81 @@ class MainActivity : AppCompatActivity() {
|
|||
val result = handleBridgeCall(payload, prompt.defaultValue ?: "")
|
||||
return GeckoResult.fromValue(prompt.confirm(result))
|
||||
}
|
||||
|
||||
// 默认处理(显示对话框)
|
||||
return null
|
||||
val res = GeckoResult<GeckoSession.PromptDelegate.PromptResponse>()
|
||||
runOnUiThread {
|
||||
val input = android.widget.EditText(this@MainActivity)
|
||||
input.setText(prompt.defaultValue)
|
||||
androidx.appcompat.app.AlertDialog.Builder(this@MainActivity)
|
||||
.setTitle(prompt.title ?: "")
|
||||
.setMessage(prompt.message)
|
||||
.setView(input)
|
||||
.setPositiveButton("确定") { _, _ -> res.complete(prompt.confirm(input.text.toString())) }
|
||||
.setNegativeButton("取消") { _, _ -> res.complete(prompt.dismiss()) }
|
||||
.setOnCancelListener { res.complete(prompt.dismiss()) }
|
||||
.show()
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
override fun onAlertPrompt(
|
||||
session: GeckoSession,
|
||||
prompt: GeckoSession.PromptDelegate.AlertPrompt
|
||||
): GeckoResult<GeckoSession.PromptDelegate.PromptResponse>? {
|
||||
Timber.tag("WebConsole").d("Alert: ${prompt.message}")
|
||||
val res = GeckoResult<GeckoSession.PromptDelegate.PromptResponse>()
|
||||
runOnUiThread {
|
||||
androidx.appcompat.app.AlertDialog.Builder(this@MainActivity)
|
||||
.setMessage(prompt.message)
|
||||
.setPositiveButton("确定") { _, _ -> res.complete(prompt.confirm()) }
|
||||
.setOnCancelListener { res.complete(prompt.dismiss()) }
|
||||
.show()
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
override fun onAuthPrompt(
|
||||
session: GeckoSession,
|
||||
prompt: GeckoSession.PromptDelegate.AuthPrompt
|
||||
): GeckoResult<GeckoSession.PromptDelegate.PromptResponse>? {
|
||||
return null
|
||||
}
|
||||
|
||||
override fun onChoicePrompt(
|
||||
session: GeckoSession,
|
||||
prompt: GeckoSession.PromptDelegate.ChoicePrompt
|
||||
): GeckoResult<GeckoSession.PromptDelegate.PromptResponse>? {
|
||||
val res = GeckoResult<GeckoSession.PromptDelegate.PromptResponse>()
|
||||
runOnUiThread {
|
||||
val choices = prompt.choices.map { it.label }.toTypedArray()
|
||||
androidx.appcompat.app.AlertDialog.Builder(this@MainActivity)
|
||||
.setTitle(prompt.title)
|
||||
.setSingleChoiceItems(choices, -1) { dialog, which ->
|
||||
dialog.dismiss()
|
||||
res.complete(prompt.confirm(prompt.choices[which]))
|
||||
}
|
||||
.setOnCancelListener { res.complete(prompt.dismiss()) }
|
||||
.show()
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
override fun onButtonPrompt(
|
||||
session: GeckoSession,
|
||||
prompt: GeckoSession.PromptDelegate.ButtonPrompt
|
||||
): GeckoResult<GeckoSession.PromptDelegate.PromptResponse>? {
|
||||
val res = GeckoResult<GeckoSession.PromptDelegate.PromptResponse>()
|
||||
runOnUiThread {
|
||||
androidx.appcompat.app.AlertDialog.Builder(this@MainActivity)
|
||||
.setTitle(prompt.title ?: "提示")
|
||||
.setMessage(prompt.message)
|
||||
.setPositiveButton("确定") { _, _ -> res.complete(prompt.confirm(GeckoSession.PromptDelegate.ButtonPrompt.Type.POSITIVE)) }
|
||||
.setNegativeButton("取消") { _, _ -> res.complete(prompt.dismiss()) }
|
||||
.setOnCancelListener { res.complete(prompt.dismiss()) }
|
||||
.show()
|
||||
}
|
||||
return res
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue