commit 814a0cdb373d80b21b5400e4ab770c9ac2bd3ccd
parent b11504ad9b32f64da09c4255a11e494ec8200c4b
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Tue, 8 Jul 2025 23:50:42 +0200
fix(message_logger): chat edit history
Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>
Diffstat:
1 file changed, 29 insertions(+), 0 deletions(-)
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/LoggerWrapper.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/LoggerWrapper.kt
@@ -430,6 +430,35 @@ class LoggerWrapper(
}.takeIf { it.timestamp > 0L } ?: continue)
}
}
+
+ if (edits.isNotEmpty()) {
+ // append original message
+ database.rawQuery("SELECT added_timestamp, message_data FROM messages WHERE conversation_id = ? AND message_id = ?", arrayOf(conversationId, messageId.toString())).use { cursor ->
+ if (!cursor.moveToFirst()) return@use
+
+ val originalMessage = cursor.getBlobOrNull("message_data") ?: return@use
+ val addedTimestamp = cursor.getLongOrNull("added_timestamp") ?: return@use
+
+ val messageObject = gson.fromJson(
+ originalMessage.toString(Charsets.UTF_8),
+ JsonObject::class.java
+ )
+
+ val messageTextContent =
+ messageObject.getAsJsonObject("mMessageContent")?.getAsJsonArray("mContent")
+ ?.map { it.asByte }?.toByteArray()?.let {
+ ProtoReader(it).getString(2, 1)
+ } ?: return@use
+
+ if (edits.firstOrNull()?.message != messageTextContent) {
+ edits.add(0, LoggedChatEdit().apply {
+ timestamp = addedTimestamp
+ message = messageTextContent
+ })
+ }
+ }
+ }
+
return edits
}