commit f95fae197a9fa9c93d9c6ffd34abd1c22b2f9a88 parent f7ba23fd8007931867bc940886f663943885eafe Author: rhunk <101876869+rhunk@users.noreply.github.com> Date: Fri, 26 May 2023 17:11:41 +0200 feat: delete logged message Diffstat:
7 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/bridge/AbstractBridgeClient.kt b/app/src/main/kotlin/me/rhunk/snapenhance/bridge/AbstractBridgeClient.kt @@ -82,6 +82,13 @@ abstract class AbstractBridgeClient { abstract fun addMessageLoggerMessage(id: Long, message: ByteArray) /** + * Delete a message from the message logger database + * + * @param id the ID of the message logger message + */ + abstract fun deleteMessageLoggerMessage(id: Long) + + /** * Clear the message logger database */ abstract fun clearMessageLogger() diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/bridge/MessageLoggerWrapper.kt b/app/src/main/kotlin/me/rhunk/snapenhance/bridge/MessageLoggerWrapper.kt @@ -15,6 +15,10 @@ class MessageLoggerWrapper( database.execSQL("CREATE TABLE IF NOT EXISTS messages (message_id INTEGER PRIMARY KEY, serialized_message BLOB)") } + fun deleteMessage(messageId: Long) { + database.execSQL("DELETE FROM messages WHERE message_id = ?", arrayOf(messageId.toString())) + } + fun addMessage(messageId: Long, serializedMessage: ByteArray): Boolean { val cursor = database.rawQuery("SELECT message_id FROM messages WHERE message_id = ?", arrayOf(messageId.toString())) val state = cursor.moveToFirst() diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/bridge/client/RootBridgeClient.kt b/app/src/main/kotlin/me/rhunk/snapenhance/bridge/client/RootBridgeClient.kt @@ -77,6 +77,10 @@ class RootBridgeClient : AbstractBridgeClient() { messageLoggerWrapper.addMessage(id, message) } + override fun deleteMessageLoggerMessage(id: Long) { + messageLoggerWrapper.deleteMessage(id) + } + override fun clearMessageLogger() { messageLoggerWrapper.clearMessages() } diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/bridge/client/ServiceBridgeClient.kt b/app/src/main/kotlin/me/rhunk/snapenhance/bridge/client/ServiceBridgeClient.kt @@ -192,6 +192,14 @@ class ServiceBridgeClient: AbstractBridgeClient(), ServiceConnection { ) } + override fun deleteMessageLoggerMessage(id: Long) { + sendMessage( + BridgeMessageType.MESSAGE_LOGGER_REQUEST, + MessageLoggerRequest(MessageLoggerRequest.Action.DELETE, id), + MessageLoggerResult::class + ) + } + override fun clearMessageLogger() { sendMessage( BridgeMessageType.MESSAGE_LOGGER_REQUEST, diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/bridge/common/impl/messagelogger/MessageLoggerRequest.kt b/app/src/main/kotlin/me/rhunk/snapenhance/bridge/common/impl/messagelogger/MessageLoggerRequest.kt @@ -24,6 +24,7 @@ class MessageLoggerRequest( enum class Action { ADD, GET, - CLEAR + CLEAR, + DELETE } } \ No newline at end of file diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/bridge/service/BridgeService.kt b/app/src/main/kotlin/me/rhunk/snapenhance/bridge/service/BridgeService.kt @@ -89,6 +89,9 @@ class BridgeService : Service() { MessageLoggerRequest.Action.CLEAR -> { messageLoggerWrapper.clearMessages() } + MessageLoggerRequest.Action.DELETE -> { + messageLoggerWrapper.deleteMessage(msg.messageId!!) + } MessageLoggerRequest.Action.GET -> { val (state, messageData) = messageLoggerWrapper.getMessage(msg.messageId!!) reply(MessageLoggerResult(state, messageData).toMessage(BridgeMessageType.MESSAGE_LOGGER_RESULT.value)) diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/menus/impl/ChatActionMenu.kt b/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/ui/menus/impl/ChatActionMenu.kt @@ -14,6 +14,7 @@ import android.view.ViewGroup.MarginLayoutParams import android.widget.Button import me.rhunk.snapenhance.Constants.VIEW_INJECTED_CODE import me.rhunk.snapenhance.config.ConfigProperty +import me.rhunk.snapenhance.features.impl.Messaging import me.rhunk.snapenhance.features.impl.downloader.MediaDownloader import me.rhunk.snapenhance.features.impl.ui.menus.AbstractMenu @@ -86,6 +87,18 @@ class ChatActionMenu : AbstractMenu() { parent.addView(downloadButton) } - //TODO: delete logged message button + //delete logged message button + if (context.config.bool(ConfigProperty.MESSAGE_LOGGER)) { + val downloadButton = Button(viewGroup.context) + applyButtonTheme(parent, downloadButton) + downloadButton.text = "Deleted logged message" + downloadButton.setOnClickListener { + closeActionMenu() + context.executeAsync { + context.bridgeClient.deleteMessageLoggerMessage(context.feature(Messaging::class).lastFocusedMessageId) + } + } + parent.addView(downloadButton) + } } }