修复前端弹窗失效:完善 PromptDelegate 处理,增加上传日志防抖

This commit is contained in:
844143714@qq,com 2026-04-30 02:04:03 +08:00
parent 62ce781993
commit a5c5c28425
2 changed files with 74 additions and 2 deletions

View File

@ -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("上传日志接口不可用");

View File

@ -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
}
}
}