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:
Mapp/src/main/kotlin/me/rhunk/snapenhance/ui/manager/sections/scripting/ScriptsSection.kt | 42+++++++++++++++++++++++++++++++++++++++++-
Mcommon/src/main/assets/lang/en_US.json | 4++++
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." } } },