diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt b/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt index 990182c7..87c75e05 100644 --- 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 { + private fun getEnabledScripts(sides: List): List { 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 { + 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 index 53cc62f6..8bb4e456 100644 --- 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, + val executionSides: List? = 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() }, ) }