Philipp Hörist pushed to branch master at gajim / gajim


Commits:
159219cf by lovetox at 2022-05-03T00:07:07+02:00
fix: Handle multiple stanza-id elements

- - - - -


6 changed files:

- gajim/common/modules/mam.py
- gajim/common/modules/message.py
- gajim/gajim.py
- gajim/gtk/chat_list.py
- gajim/gtk/controls/groupchat.py
- setup.cfg


Changes:

=====================================
gajim/common/modules/mam.py
=====================================
@@ -128,6 +128,12 @@ def _get_unique_id(self, properties):
         # A message we received
         return properties.mam.id, None
 
+    @staticmethod
+    def _get_stanza_id(properties, archive_jid):
+        for stanza_id in properties.stanza_ids:
+            if stanza_id.by == archive_jid:
+                return stanza_id
+
     def _set_message_archive_info(self, _con, _stanza, properties):
         if (properties.is_mam_message or
                 properties.is_pubsub or
@@ -155,10 +161,11 @@ def _set_message_archive_info(self, _con, _stanza, 
properties):
             archive_jid = self._con.get_own_jid().bare
             timestamp = None
 
-        if properties.stanza_id is None:
+        if not properties.stanza_ids:
             return
 
-        if not archive_jid == properties.stanza_id.by:
+        stanza_id = self._get_stanza_id(properties, archive_jid)
+        if stanza_id is None:
             return
 
         if not self.is_catch_up_finished(archive_jid):
@@ -166,7 +173,7 @@ def _set_message_archive_info(self, _con, _stanza, 
properties):
 
         app.storage.archive.set_archive_infos(
             archive_jid,
-            last_mam_id=properties.stanza_id.id,
+            last_mam_id=stanza_id.id,
             last_muc_timestamp=timestamp)
 
     def _mam_message_received(self, _con, stanza, properties):


=====================================
gajim/common/modules/message.py
=====================================
@@ -292,7 +292,7 @@ def _get_unique_id(self, properties):
             # Deduplicate self message with message-id
             return None, properties.id
 
-        if properties.stanza_id is None:
+        if not properties.stanza_ids:
             return None, None
 
         if properties.type.is_groupchat:
@@ -309,8 +309,10 @@ def _get_unique_id(self, properties):
 
             archive = self._con.get_own_jid()
 
-        if archive.bare_match(properties.stanza_id.by):
-            return properties.stanza_id.id, None
+        for stanza_id in properties.stanza_ids:
+            if archive.bare_match(stanza_id.by):
+                return stanza_id.id, None
+
         # stanza-id not added by the archive, ignore it.
         return None, None
 


=====================================
gajim/gajim.py
=====================================
@@ -30,7 +30,7 @@
 from gajim.common import i18n
 
 
-_MIN_NBXMPP_VER = '3.0.0-dev2'
+_MIN_NBXMPP_VER = '3.0.0.dev3'
 _MIN_GTK_VER = '3.22.27'
 _MIN_CAIRO_VER = '1.16.0'
 _MIN_PYGOBJECT_VER = '3.32.0'


=====================================
gajim/gtk/chat_list.py
=====================================
@@ -397,13 +397,9 @@ def _on_message_received(self, event: MessageEventT) -> 
None:
         row.set_nick(nick)
         if event.name == 'mam-message-received':
             row.set_timestamp(event.properties.mam.timestamp)
-            row.set_stanza_id(event.stanza_id)
         else:
             row.set_timestamp(event.properties.timestamp)
-            stanza_id = None
-            if event.properties.stanza_id:
-                stanza_id = event.properties.stanza_id.id
-            row.set_stanza_id(stanza_id)
+        row.set_stanza_id(event.stanza_id)
         row.set_message_id(event.unique_id)
         row.set_message_text(
             event.msgtxt,


=====================================
gajim/gtk/controls/groupchat.py
=====================================
@@ -612,15 +612,13 @@ def _on_gc_message_received(self, event: 
events.GcMessageReceived) -> None:
         else:
             if event.properties.muc_nickname == self.contact.nickname:
                 self.last_sent_txt = event.msgtxt
-            stanza_id = None
-            if event.properties.stanza_id:
-                stanza_id = event.properties.stanza_id.id
+
             self.add_message(event.msgtxt,
                              contact=event.properties.muc_nickname,
                              tim=event.properties.timestamp,
                              displaymarking=event.displaymarking,
                              message_id=event.properties.id,
-                             stanza_id=stanza_id,
+                             stanza_id=event.stanza_id,
                              additional_data=event.additional_data)
         event.needs_highlight = helpers.message_needs_highlight(
             event.msgtxt,


=====================================
setup.cfg
=====================================
@@ -22,7 +22,7 @@ test_suite = test
 install_requires =
     css-parser
     keyring
-    nbxmpp>=2.99.0
+    nbxmpp>=3.0.0.dev3
     packaging
     precis-i18n>=1.0.0
     pyOpenSSL>=16.2



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/159219cfdf72538316b25416b79b8c70c0234b08

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/159219cfdf72538316b25416b79b8c70c0234b08
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to