diff options
| author | fiaxh <git@lightrise.org> | 2026-03-25 19:19:29 +0100 |
|---|---|---|
| committer | fiaxh <git@lightrise.org> | 2026-03-25 19:20:26 +0100 |
| commit | 0b92ee2a113ca8da2d3a4d4b06056f291738b5fe (patch) | |
| tree | e1279162ba45c66397d0ef0b9f3ad4ffda055c50 /libdino/src/service/message_storage.vala | |
| parent | cf352dbf57add6e038fc919172bb5d32fb5f775f (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.vala | 17 |
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; |
