From c6e7f8628d0f980d17b9a154e0b611ddd551c2ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= <philipp@hoerist.com> Date: Sun, 25 Feb 2018 21:04:34 +0100 Subject: [PATCH] MAM: Display received mam message in open chats --- gajim/chat_control.py | 17 +++++++++++++++++ gajim/common/connection_handlers_events.py | 7 +++++++ 2 files changed, 24 insertions(+) diff --git a/gajim/chat_control.py b/gajim/chat_control.py index 71533a6207..c0b01f2d69 100644 --- a/gajim/chat_control.py +++ b/gajim/chat_control.py @@ -240,6 +240,9 @@ class ChatControl(ChatControlBase): self._nec_caps_received) app.ged.register_event_handler('stanza-message-outgoing', ged.OUT_POSTCORE, self._message_sent) + app.ged.register_event_handler( + 'mam-decrypted-message-received', + ged.GUI1, self._nec_mam_decrypted_message_received) # PluginSystem: adding GUI extension point for this ChatControl # instance object @@ -806,6 +809,20 @@ class ChatControl(ChatControlBase): app.plugin_manager.extension_point( 'encryption_dialog' + self.encryption, self) + def _nec_mam_decrypted_message_received(self, obj): + if obj.conn.name != self.account: + return + if obj.with_ != self.contact.jid: + return + + kind = 'incoming' + if obj.kind == KindConstant.CHAT_MSG_SENT: + kind = 'outgoing' + + self.print_conversation(obj.msgtxt, kind, tim=obj.timestamp, + encrypted=obj.encrypted, correct_id=obj.correct_id, + msg_stanza_id=obj.message_id, additional_data=obj.additional_data) + def _message_sent(self, obj): if obj.conn.name != self.account: return diff --git a/gajim/common/connection_handlers_events.py b/gajim/common/connection_handlers_events.py index 93a6b9844d..758303e332 100644 --- a/gajim/common/connection_handlers_events.py +++ b/gajim/common/connection_handlers_events.py @@ -1052,6 +1052,7 @@ class MamMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): # use stanza-id as unique-id self.unique_id, origin_id = self.get_unique_id() + self.message_id = self.msg_.getID() # Check for duplicates if app.logger.find_stanza_id(account, @@ -1199,11 +1200,17 @@ class MamDecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): base_network_events = [] def generate(self): + self.correct_id = None + if not self.msgtxt: # For example Chatstates, Receipts, Chatmarkers log.debug('Received MAM message without text') return + replace = self.msg_.getTag('replace', namespace=nbxmpp.NS_CORRECT) + if replace is not None: + self.correct_id = replace.getAttr('id') + self.get_oob_data(self.msg_) if self.groupchat: -- GitLab