aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/service/message_storage.vala
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2026-03-25 19:19:29 +0100
committerfiaxh <git@lightrise.org>2026-03-25 19:20:26 +0100
commit0b92ee2a113ca8da2d3a4d4b06056f291738b5fe (patch)
treee1279162ba45c66397d0ef0b9f3ad4ffda055c50 /libdino/src/service/message_storage.vala
parentcf352dbf57add6e038fc919172bb5d32fb5f775f (diff)
Fix wrongly using message ids for MUC corrections; store original message db ids
Diffstat (limited to 'libdino/src/service/message_storage.vala')
-rw-r--r--libdino/src/service/message_storage.vala17
1 files changed, 15 insertions, 2 deletions
diff --git a/libdino/src/service/message_storage.vala b/libdino/src/service/message_storage.vala
index 59e43d32..d6b8d6e3 100644
--- a/libdino/src/service/message_storage.vala
+++ b/libdino/src/service/message_storage.vala
@@ -204,8 +204,21 @@ public class MessageStorage : StreamInteractionModule, Object {
}
}
- public static string? get_reference_id(Message message) {
- if (message.edit_to != null) return message.edit_to;
+ public string? get_reference_id(Message message, Conversation conversation) {
+ if (message.edit_to != null) {
+ // This is a message edit, so the reference id should be the one of the original message
+ if (message.type_ == Message.Type.CHAT) {
+ return message.edit_to;
+ } else {
+ if (message.edit_to_id != 0) {
+ Message original_message = get_message_by_id(message.edit_to_id, conversation);
+ return original_message.server_id;
+ } else {
+ // We don't know the original message, so taking the server id of the correction is the best we can do
+ return message.server_id;
+ }
+ }
+ }
if (message.type_ == Message.Type.CHAT) {
return message.stanza_id;