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)
/**
* 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
*/

View File

@ -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()

View File

@ -77,6 +77,10 @@ class RootBridgeClient : AbstractBridgeClient() {
messageLoggerWrapper.addMessage(id, message)
}
override fun deleteMessageLoggerMessage(id: Long) {
messageLoggerWrapper.deleteMessage(id)
}
override fun clearMessageLogger() {
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() {
sendMessage(
BridgeMessageType.MESSAGE_LOGGER_REQUEST,

View File

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

View File

@ -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))

View File

@ -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)
}
}
}