From 31c6bef10f85275aa44e6fd66fa4178c8a9451b0 Mon Sep 17 00:00:00 2001 From: rhunk <101876869+rhunk@users.noreply.github.com> Date: Sun, 17 Mar 2024 17:09:58 +0100 Subject: [PATCH] refactor: actions --- .../ui/manager/pages/home/HomeSettings.kt | 24 ++++++++++---- common/src/main/assets/lang/en_US.json | 32 ++++++++++++++----- .../snapenhance/common/action/EnumAction.kt | 1 - .../me/rhunk/snapenhance/core/SnapEnhance.kt | 1 + .../snapenhance/core/action/AbstractAction.kt | 2 ++ .../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 index c1d73737..fb36e6a1 100644 --- 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 index 8ec53b9e..5dfab33a 100644 --- 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 index e31ea259..d74e820c 100644 --- 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 index abe61303..e7874cde 100644 --- 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 index 315ca146..0effa7f1 100644 --- 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 index 4d6ddeb3..b3e124a7 100644 --- 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()