feat(scripting): custom module execution sides

Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>
This commit is contained in:
rhunk
2024-06-28 00:47:35 +02:00
parent f5ce6e9d5c
commit dca811daf4
2 changed files with 11 additions and 5 deletions

View File

@@ -86,7 +86,7 @@ class RemoteScriptManager(
}
sync()
enabledScripts.forEach { name ->
getEnabledScripts(listOf(BindingSide.MANAGER.key)).forEach { name ->
runCatching {
loadScript(name)
}.onFailure {
@@ -181,17 +181,21 @@ class RemoteScriptManager(
}.getOrNull()
}
override fun getEnabledScripts(): List<String> {
private fun getEnabledScripts(sides: List<String>): List<String> {
return runCatching {
getScriptFileNames().filter {
context.database.isScriptEnabled(cachedModuleInfo[it]?.name ?: return@filter false)
getScriptFileNames().filter { name ->
cachedModuleInfo[name]?.executionSides?.any { it in sides } ?: true &&
context.database.isScriptEnabled(cachedModuleInfo[name]?.name ?: return@filter false)
}
}.onFailure {
context.log.error("Failed to get enabled scripts", it)
}.getOrDefault(emptyList())
}
override fun getEnabledScripts(): List<String> {
return getEnabledScripts(listOf(BindingSide.CORE.key))
}
override fun getScriptContent(moduleName: String): ParcelFileDescriptor? {
return getScriptInputStream(moduleName) { it?.toParcelFileDescriptor(context.coroutineScope) }
}

View File

@@ -12,6 +12,7 @@ data class ModuleInfo(
val minSnapchatVersion: Long? = null,
val minSEVersion: Long? = null,
val grantedPermissions: List<String>,
val executionSides: List<String>? = null,
) {
fun ensurePermissionGranted(permission: Permissions) {
if (!grantedPermissions.contains(permission.key)) {
@@ -53,5 +54,6 @@ fun BufferedReader.readModuleInfo(): ModuleInfo {
minSnapchatVersion = properties["minSnapchatVersion"]?.toLongOrNull(),
minSEVersion = properties["minSEVersion"]?.toLongOrNull(),
grantedPermissions = properties["permissions"]?.split(",")?.map { it.trim() } ?: emptyList(),
executionSides = properties["executionSides"]?.lowercase()?.split(",")?.map { it.trim() },
)
}