commit 31c6bef10f85275aa44e6fd66fa4178c8a9451b0
parent b5a3b1317232e845a0fa0f43a05d04736efd9cb5
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Sun, 17 Mar 2024 17:09:58 +0100
refactor: actions
Diffstat:
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()