fix(scripting): dead objects

- add no args emit
This commit is contained in:
rhunk
2023-09-17 02:50:44 +02:00
parent 08cd7917f3
commit e79aba8165
5 changed files with 40 additions and 12 deletions

View File

@ -125,7 +125,7 @@ class SnapEnhance {
}
})
scriptRuntime.ipcManager = object: IPCInterface {
scriptRuntime.ipcManager = object: IPCInterface() {
override fun on(eventName: String, listener: Listener) {
registerIPCListener(eventName, object: IPCListener.Stub() {
override fun onMessage(args: Array<out String?>) {

View File

@ -2,7 +2,10 @@ package me.rhunk.snapenhance.scripting
typealias Listener = (Array<out String?>) -> Unit
interface IPCInterface {
fun on(eventName: String, listener: Listener)
fun emit(eventName: String, args: Array<out String?>)
abstract class IPCInterface {
abstract fun on(eventName: String, listener: Listener)
abstract fun emit(eventName: String, vararg args: String?)
fun emit(eventName: String) = emit(eventName, *emptyArray())
}

View File

@ -13,7 +13,13 @@ class ScriptRuntime(
private val modules = mutableMapOf<String, JSModule>()
fun eachModule(f: JSModule.() -> Unit) {
modules.values.forEach(f)
modules.values.forEach { module ->
runCatching {
module.f()
}.onFailure {
logger.error("Failed to run module function in ${module.moduleInfo.name}", it)
}
}
}
private fun readModuleInfo(reader: BufferedReader): ModuleInfo {