修复前端弹窗失效:完善 PromptDelegate 处理,增加上传日志防抖
This commit is contained in:
parent
62ce781993
commit
a5c5c28425
|
|
@ -418,9 +418,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var lastUploadTime = 0;
|
||||||
// 上传日志
|
// 上传日志
|
||||||
function callUploadLogs() {
|
function callUploadLogs() {
|
||||||
|
var now = Date.now();
|
||||||
|
if (now - lastUploadTime < 30000) {
|
||||||
|
alert("请勿频繁上传,请半分钟后再试");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (window.android && window.android.uploadLogs) {
|
if (window.android && window.android.uploadLogs) {
|
||||||
|
lastUploadTime = now;
|
||||||
|
alert("开始上传日志...");
|
||||||
window.android.uploadLogs();
|
window.android.uploadLogs();
|
||||||
} else {
|
} else {
|
||||||
alert("上传日志接口不可用");
|
alert("上传日志接口不可用");
|
||||||
|
|
|
||||||
|
|
@ -231,17 +231,81 @@ class MainActivity : AppCompatActivity() {
|
||||||
val result = handleBridgeCall(payload, prompt.defaultValue ?: "")
|
val result = handleBridgeCall(payload, prompt.defaultValue ?: "")
|
||||||
return GeckoResult.fromValue(prompt.confirm(result))
|
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(
|
override fun onAlertPrompt(
|
||||||
session: GeckoSession,
|
session: GeckoSession,
|
||||||
prompt: GeckoSession.PromptDelegate.AlertPrompt
|
prompt: GeckoSession.PromptDelegate.AlertPrompt
|
||||||
): GeckoResult<GeckoSession.PromptDelegate.PromptResponse>? {
|
): 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
|
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