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


Commits:
506fc021 by Philipp Hörist at 2024-05-12T21:36:18+02:00
new: Store sent reactions in the database

- - - - -


1 changed file:

- gajim/common/modules/message.py


Changes:

=====================================
gajim/common/modules/message.py
=====================================
@@ -22,7 +22,9 @@
 from gajim.common.events import MessageReceived
 from gajim.common.events import MessageSent
 from gajim.common.events import RawMessageReceived
+from gajim.common.events import ReactionReceived
 from gajim.common.modules.base import BaseModule
+from gajim.common.modules.message_util import convert_message_type
 from gajim.common.modules.message_util import get_chat_type_and_direction
 from gajim.common.modules.message_util import get_eme_message
 from gajim.common.modules.message_util import get_message_timestamp
@@ -342,6 +344,20 @@ def build_message_stanza(self, message: OutgoingMessage) 
-> nbxmpp.Message:
             typ=convert_message_type(message.type)
         )
 
+        # XEP-0359
+        stanza.setID(message.message_id)
+        stanza.setOriginID(message.message_id)
+
+        # Mark Message as MUC PM
+        if message.is_pm:
+            stanza.setTag('x', namespace=Namespace.MUC_USER)
+
+        # XEP-0444
+        if message.reaction_data is not None:
+            stanza.setReactions(*message.reaction_data)
+            stanza.setTag('store', namespace=Namespace.MSG_HINTS)
+            return stanza
+
         if message.correct_id:
             stanza.setTag('replace', attrs={'id': message.correct_id},
                           namespace=Namespace.CORRECT)
@@ -353,14 +369,6 @@ def build_message_stanza(self, message: OutgoingMessage) 
-> nbxmpp.Message:
                             message.reply_data.fallback_start,
                             message.reply_data.fallback_end)
 
-        # XEP-0444
-        if message.reaction_data is not None:
-            stanza.setReactions(*message.reaction_data)
-
-        # XEP-0359
-        stanza.setID(message.message_id)
-        stanza.setOriginID(message.message_id)
-
         if message.sec_label:
             stanza.addChild(node=message.sec_label.to_node())
 
@@ -374,10 +382,6 @@ def build_message_stanza(self, message: OutgoingMessage) 
-> nbxmpp.Message:
             if message.has_text() and not message.is_groupchat:
                 stanza.setReceiptRequest()
 
-        # Mark Message as MUC PM
-        if message.is_pm:
-            stanza.setTag('x', namespace=Namespace.MUC_USER)
-
         # XEP-0085
         if message.chatstate is not None:
             stanza.setTag(message.chatstate, namespace=Namespace.CHATSTATES)
@@ -432,6 +436,29 @@ def store_message(self, message: OutgoingMessage) -> None:
             if message.type == MessageType.GROUPCHAT:
                 state = MessageState.PENDING
 
+        if message.reaction_data is not None:
+            reactions_id, reactions = message.reaction_data
+            reaction = mod.Reaction(
+                account_=self._account,
+                remote_jid_=remote_jid,
+                occupant_=occupant,
+                id=reactions_id,
+                direction=direction,
+                emojis=';'.join(reactions),
+                timestamp=message.timestamp,
+            )
+
+            app.storage.archive.upsert_row2(reaction)
+
+            app.ged.raise_event(
+                ReactionReceived(
+                    account=self._account,
+                    jid=remote_jid,
+                    reaction_id=reactions_id,
+                )
+            )
+            return
+
         encryption_data = None
         encryption = message.get_encryption()
         if encryption is not None:



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/506fc021a49c09317366fcf7e928c3afe21ecfe6

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


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to