commit dca811daf4ba9f3194999494ddf184c5d4ccb31b
parent f5ce6e9d5c18a07abb863f3a758092ef1954978d
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Fri, 28 Jun 2024 00:47:35 +0200
feat(scripting): custom module execution sides
Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>
Diffstat:
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt b/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt
@@ -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) }
}
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/type/ModuleInfo.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/scripting/type/ModuleInfo.kt
@@ -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() },
)
}