fix(message_logger): chat edit history
Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>
This commit is contained in:
@@ -430,6 +430,35 @@ class LoggerWrapper(
|
|||||||
}.takeIf { it.timestamp > 0L } ?: continue)
|
}.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
|
return edits
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user