feat(scripting): custom module execution sides
Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>
This commit is contained in:
@@ -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) }
|
||||
}
|
||||
|
||||
@@ -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() },
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user