From 0b92ee2a113ca8da2d3a4d4b06056f291738b5fe Mon Sep 17 00:00:00 2001 From: fiaxh Date: Wed, 25 Mar 2026 19:19:29 +0100 Subject: Fix wrongly using message ids for MUC corrections; store original message db ids --- libdino/src/service/message_storage.vala | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'libdino/src/service/message_storage.vala') 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; -- cgit v1.3