commit 31c6bef10f85275aa44e6fd66fa4178c8a9451b0
parent b5a3b1317232e845a0fa0f43a05d04736efd9cb5
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sun, 17 Mar 2024 17:09:58 +0100

refactor: actions

Diffstat:
Mapp/src/main/kotlin/me/rhunk/snapenhance/ui/manager/pages/home/HomeSettings.kt | 24+++++++++++++++++-------
Mcommon/src/main/assets/lang/en_US.json | 32++++++++++++++++++++++++--------
Mcommon/src/main/kotlin/me/rhunk/snapenhance/common/action/EnumAction.kt | 1-
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/SnapEnhance.kt | 1+
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/action/AbstractAction.kt | 2++
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/action/ActionManager.kt | 4++++
6 files changed, 48 insertions(+), 16 deletions(-)

diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/pages/home/HomeSettings.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/pages/home/HomeSettings.kt @@ -52,7 +52,10 @@ class HomeSettings : Routes.Route() { .height(55.dp) .clickable { value = !value - sharedPreferences.edit().putBoolean(realKey, value).apply() + sharedPreferences + .edit() + .putBoolean(realKey, value) + .apply() }, horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically @@ -66,7 +69,7 @@ class HomeSettings : Routes.Route() { } @Composable - private fun RowAction(title: String, requireConfirmation: Boolean = false, action: () -> Unit) { + private fun RowAction(key: String, requireConfirmation: Boolean = false, action: () -> Unit) { var confirmationDialog by remember { mutableStateOf(false) } @@ -100,8 +103,15 @@ class HomeSettings : Routes.Route() { horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { - Text(text = title, modifier = Modifier.padding(start = 26.dp)) - IconButton(onClick = { takeAction() }) { + Column( + modifier = Modifier.weight(1f), + ) { + Text(text = context.translation["actions.$key.name"], fontSize = 16.sp, fontWeight = FontWeight.Bold) + context.translation.getOrNull("actions.$key.description")?.let { Text(text = it, fontSize = 12.sp, maxLines = 3) } + } + IconButton(onClick = { takeAction() }, + modifier = Modifier.padding(end = 2.dp) + ) { Icon( imageVector = Icons.AutoMirrored.Filled.OpenInNew, contentDescription = null, @@ -140,14 +150,14 @@ class HomeSettings : Routes.Route() { ) { RowTitle(title = "Actions") EnumAction.entries.forEach { enumAction -> - RowAction(title = context.translation["actions.${enumAction.key}"]) { + RowAction(key = enumAction.key) { launchActionIntent(enumAction) } } - RowAction(title = "Regenerate Mappings") { + RowAction(key = "regen_mappings") { context.checkForRequirements(Requirements.MAPPINGS) } - RowAction(title = "Change Language") { + RowAction(key = "change_language") { context.checkForRequirements(Requirements.LANGUAGE) } RowTitle(title = "Message Logger") diff --git a/common/src/main/assets/lang/en_US.json b/common/src/main/assets/lang/en_US.json @@ -130,14 +130,30 @@ }, "actions": { - "clean_snapchat_cache": "Clean Snapchat Cache", - "clear_message_logger": "Clear Message Logger", - "refresh_mappings": "Refresh Mappings", - "open_map": "Choose location on map", - "check_for_updates": "Check for updates", - "export_chat_messages": "Export Chat Messages", - "export_memories": "Export Memories", - "bulk_messaging_action": "Bulk Messaging Action" + "clean_snapchat_cache": { + "name": "Clean Snapchat Cache", + "description": "Cleans the Snapchat Cache" + }, + "export_chat_messages": { + "name": "Export Chat Messages", + "description": "Exports conversation messages into a JSON/HTML/TXT file" + }, + "export_memories": { + "name": "Export Memories", + "description": "Exports memories into a ZIP file" + }, + "bulk_messaging_action": { + "name": "Bulk Messaging Action", + "description": "Performs operations such as deleting friends or mass deletion of conversations" + }, + "regen_mappings": { + "name": "Regenerate Mappings", + "description": "Manually regenerate mappings" + }, + "change_language": { + "name": "Change Language", + "description": "Change the language of SnapEnhance" + } }, "features": { diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/action/EnumAction.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/action/EnumAction.kt @@ -5,7 +5,6 @@ package me.rhunk.snapenhance.common.action enum class EnumAction( val key: String, val exitOnFinish: Boolean = false, - val isCritical: Boolean = false, ) { EXPORT_CHAT_MESSAGES("export_chat_messages"), EXPORT_MEMORIES("export_memories"), diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/SnapEnhance.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/SnapEnhance.kt @@ -166,6 +166,7 @@ class SnapEnhance { features.onActivityCreate() inAppOverlay.onActivityCreate(mainActivity!!) scriptRuntime.eachModule { callFunction("module.onSnapMainActivityCreate", mainActivity!!) } + actionManager.onActivityCreate() } }.also { time -> appContext.log.verbose("onActivityCreate took $time") diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/action/AbstractAction.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/AbstractAction.kt @@ -11,6 +11,8 @@ abstract class AbstractAction{ */ open fun run() {} + open fun onActivityCreate() {} + protected open fun deleteRecursively(parent: File?) { if (parent == null) return if (parent.isDirectory) for (child in parent.listFiles()!!) deleteRecursively( diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/action/ActionManager.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/action/ActionManager.kt @@ -31,6 +31,10 @@ class ActionManager( execute(EnumAction.entries.find { it.key == action } ?: return) } + fun onActivityCreate() { + actions.values.forEach { it.onActivityCreate() } + } + fun execute(enumAction: EnumAction) { val action = actions[enumAction] ?: return action.run()