commit 8f2940e0a66bc3fb8e6ba2054ea6cafe295d32c1
parent 88425654f343d4c254bd592ea23d3fcdc1071b26
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Wed, 27 Dec 2023 12:38:49 +0100
feat(app/scripting): warning dialog
Diffstat:
2 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptsSection.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptsSection.kt
@@ -144,7 +144,7 @@ class ScriptsSection : Section() {
@Composable
fun ScriptSettings(script: ModuleInfo) {
- val settingsInterface = remember {
+ val settingsInterface = remember {
val module = context.scriptManager.runtime.getModuleByName(script.name) ?: return@remember null
(module.getBinding(InterfaceManager::class))?.buildInterface(EnumScriptInterface.SETTINGS)
}
@@ -247,6 +247,46 @@ class ScriptsSection : Section() {
modifier = Modifier.align(Alignment.TopCenter)
)
}
+
+ var scriptingWarning by remember {
+ mutableStateOf(context.sharedPreferences.run {
+ getBoolean("scripting_warning", true).also {
+ edit().putBoolean("scripting_warning", false).apply()
+ }
+ })
+ }
+
+ if (scriptingWarning) {
+ var timeout by remember {
+ mutableIntStateOf(10)
+ }
+
+ LaunchedEffect(Unit) {
+ while (timeout > 0) {
+ delay(1000)
+ timeout--
+ }
+ }
+
+ AlertDialog(onDismissRequest = {
+ if (timeout == 0) {
+ scriptingWarning = false
+ }
+ }, title = {
+ Text(text = context.translation["manager.dialogs.scripting_warning.title"])
+ }, text = {
+ Text(text = context.translation["manager.dialogs.scripting_warning.content"])
+ }, confirmButton = {
+ TextButton(
+ onClick = {
+ scriptingWarning = false
+ },
+ enabled = timeout == 0
+ ) {
+ Text(text = "OK " + if (timeout > 0) "($timeout)" else "")
+ }
+ })
+ }
}
@Composable
diff --git a/common/src/main/assets/lang/en_US.json b/common/src/main/assets/lang/en_US.json
@@ -63,6 +63,10 @@
"fetch_error": "Failed to fetch data",
"category_groups": "Groups",
"category_friends": "Friends"
+ },
+ "scripting_warning": {
+ "title": "Warning",
+ "content": "SnapEnhance includes a scripting tool, allowing the execution of user-defined code on your device. Use extreme caution and only install modules from known, reliable sources. Unauthorized or unverified modules may pose security risks to your system."
}
}
},