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:
Mcommon/src/main/kotlin/me/rhunk/snapenhance/common/bridge/wrapper/LoggerWrapper.kt | 29+++++++++++++++++++++++++++++
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 }