Fix threading for callbacks from browser

This commit is contained in:
Kelvin
2026-01-31 13:15:09 +01:00
parent 067abc415b
commit 8469f17b4c
@@ -168,7 +168,9 @@ class PackageBrowser: V8Package {
browser.evaluateJavascript(js, object : ValueCallback<String> { browser.evaluateJavascript(js, object : ValueCallback<String> {
override fun onReceiveValue(value: String?) { override fun onReceiveValue(value: String?) {
Logger.i("PackageBrowser", "Browser run returned: " + (value ?: "")); Logger.i("PackageBrowser", "Browser run returned: " + (value ?: ""));
funcClone?.callVoid(null, arrayOf(value)); StateApp.instance.scopeOrNull?.launch(Dispatchers.IO) {
funcClone?.callVoid(null, arrayOf(value));
}
} }
}) })
} }
@@ -184,8 +186,11 @@ class PackageBrowser: V8Package {
fun callback(id: String, result: String) { fun callback(id: String, result: String) {
Logger.i("PackageBrowser", "Browser Callback [${id}]: ${result}"); Logger.i("PackageBrowser", "Browser Callback [${id}]: ${result}");
val callback = synchronized(pack._callbacks) { pack._callbacks.remove(id); }; val callback = synchronized(pack._callbacks) { pack._callbacks.remove(id); };
if(callback != null) if(callback != null) {
callback.invoke(result); StateApp.instance.scopeOrNull?.launch(Dispatchers.IO) {
callback.invoke(result);
}
}
} }
@JavascriptInterface @JavascriptInterface