feat: delete logged message

This commit is contained in:
rhunk 2023-05-26 17:11:41 +02:00
parent f7ba23fd80
commit f95fae197a
7 changed files with 42 additions and 2 deletions

View File

@ -81,6 +81,13 @@ abstract class AbstractBridgeClient {
*/ */
abstract fun addMessageLoggerMessage(id: Long, message: ByteArray) 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 * Clear the message logger database
*/ */

View File

@ -15,6 +15,10 @@ class MessageLoggerWrapper(
database.execSQL("CREATE TABLE IF NOT EXISTS messages (message_id INTEGER PRIMARY KEY, serialized_message BLOB)") 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 { fun addMessage(messageId: Long, serializedMessage: ByteArray): Boolean {
val cursor = database.rawQuery("SELECT message_id FROM messages WHERE message_id = ?", arrayOf(messageId.toString())) val cursor = database.rawQuery("SELECT message_id FROM messages WHERE message_id = ?", arrayOf(messageId.toString()))
val state = cursor.moveToFirst() val state = cursor.moveToFirst()

View File

@ -77,6 +77,10 @@ class RootBridgeClient : AbstractBridgeClient() {
messageLoggerWrapper.addMessage(id, message) messageLoggerWrapper.addMessage(id, message)
} }
override fun deleteMessageLoggerMessage(id: Long) {
messageLoggerWrapper.deleteMessage(id)
}
override fun clearMessageLogger() { override fun clearMessageLogger() {
messageLoggerWrapper.clearMessages() messageLoggerWrapper.clearMessages()
} }

View File

@ -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() { override fun clearMessageLogger() {
sendMessage( sendMessage(
BridgeMessageType.MESSAGE_LOGGER_REQUEST, BridgeMessageType.MESSAGE_LOGGER_REQUEST,

View File

@ -24,6 +24,7 @@ class MessageLoggerRequest(
enum class Action { enum class Action {
ADD, ADD,
GET, GET,
CLEAR CLEAR,
DELETE
} }
} }

View File

@ -89,6 +89,9 @@ class BridgeService : Service() {
MessageLoggerRequest.Action.CLEAR -> { MessageLoggerRequest.Action.CLEAR -> {
messageLoggerWrapper.clearMessages() messageLoggerWrapper.clearMessages()
} }
MessageLoggerRequest.Action.DELETE -> {
messageLoggerWrapper.deleteMessage(msg.messageId!!)
}
MessageLoggerRequest.Action.GET -> { MessageLoggerRequest.Action.GET -> {
val (state, messageData) = messageLoggerWrapper.getMessage(msg.messageId!!) val (state, messageData) = messageLoggerWrapper.getMessage(msg.messageId!!)
reply(MessageLoggerResult(state, messageData).toMessage(BridgeMessageType.MESSAGE_LOGGER_RESULT.value)) reply(MessageLoggerResult(state, messageData).toMessage(BridgeMessageType.MESSAGE_LOGGER_RESULT.value))

View File

@ -14,6 +14,7 @@ import android.view.ViewGroup.MarginLayoutParams
import android.widget.Button import android.widget.Button
import me.rhunk.snapenhance.Constants.VIEW_INJECTED_CODE import me.rhunk.snapenhance.Constants.VIEW_INJECTED_CODE
import me.rhunk.snapenhance.config.ConfigProperty 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.downloader.MediaDownloader
import me.rhunk.snapenhance.features.impl.ui.menus.AbstractMenu import me.rhunk.snapenhance.features.impl.ui.menus.AbstractMenu
@ -86,6 +87,18 @@ class ChatActionMenu : AbstractMenu() {
parent.addView(downloadButton) 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)
}
} }
} }