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


Commits:
2a4954c4 by Philipp Hörist at 2025-10-23T13:16:00+02:00
cfix: Chatstates: Fix and simplify code

- Don't raise signal on ResourceContacts
- Banner: Remove obsolete signal handling of chatstate-update
- Make composing timeout also apply to PAUSED state

- - - - -


3 changed files:

- gajim/common/modules/chatstates.py
- gajim/common/modules/contacts.py
- gajim/gtk/chat_banner.py


Changes:

=====================================
gajim/common/modules/chatstates.py
=====================================
@@ -168,7 +168,7 @@ def _process_chatstate(
         ):
             return self._raise_if_necessary(properties)
 
-        jid = properties.jid
+        jid = properties.remote_jid
         assert jid is not None
 
         m_type = 'chat'
@@ -225,7 +225,7 @@ def _set_composing_timeout(
         self, jid: JID, m_type: str, state: State
     ) -> None:
         self._remove_remote_composing_timeout(jid, m_type)
-        if state != State.COMPOSING:
+        if state not in (State.COMPOSING, State.PAUSED):
             return
 
         # the spec does not cover any timeout for the composing action,


=====================================
gajim/common/modules/contacts.py
=====================================
@@ -224,7 +224,7 @@ def get_contact_if_exists(
         self,
         jid: JID
     ) -> BareContact | ResourceContact | GroupchatContact | 
GroupchatParticipant | None:
-        contact = self._contacts.get(jid)
+        contact = self._contacts.get(jid.new_as_bare())
         if contact is None:
             return None
 
@@ -425,7 +425,6 @@ def add_resource(self, resource: str) -> ResourceContact:
         contact = ResourceContact(self._log, jid, self._account)
         self._resources[resource] = contact
         contact.connect('presence-update', self._on_signal)
-        contact.connect('chatstate-update', self._on_signal)
         contact.connect('nickname-update', self._on_signal)
         contact.connect('caps-update', self._on_signal)
         return contact
@@ -499,15 +498,10 @@ def idle_datetime(self) -> datetime | None:
 
     @property
     def chatstate(self) -> Chatstate | None:
-        chatstates = {contact.chatstate for contact in 
self._resources.values()}
-        chatstates.discard(None)
-        if not chatstates:
-            return None
-        return min(chatstates)
+        return self.get_module('Chatstate').get_remote_chatstate(self._jid)
 
     def force_chatstate_update(self) -> None:
-        for contact in self._resources.values():
-            contact.notify('chatstate-update')
+        self.notify('chatstate-update')
 
     @property
     def name(self) -> str:
@@ -738,10 +732,6 @@ def priority(self) -> int:
     def idle_datetime(self) -> datetime | None:
         return self._presence.idle_datetime
 
-    @property
-    def chatstate(self) -> Chatstate | None:
-        return self.get_module('Chatstate').get_remote_chatstate(self._jid)
-
     def update_presence(self,
                         presence_data: PresenceData,
                         notify: bool = True


=====================================
gajim/gtk/chat_banner.py
=====================================
@@ -135,7 +135,6 @@ def _connect_signals(self) -> None:
 
         self._contact.multi_connect(
             {
-                "chatstate-update": self._on_chatstate_update,
                 "nickname-update": self._on_nickname_update,
                 "avatar-update": self._on_avatar_update,
                 "presence-update": self._on_presence_update,
@@ -184,14 +183,6 @@ def _on_presence_update(
         self._update_avatar()
         self._update_description_label()
 
-    def _on_chatstate_update(
-        self, contact: types.BareContact, _signal_name: str
-    ) -> None:
-        if contact.is_groupchat:
-            self._update_description_label()
-        else:
-            self._update_name_label()
-
     def _on_nickname_update(
         self, _contact: types.BareContact, _signal_name: str
     ) -> None:



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/2a4954c4f075adc462344059696023e6a5f0b5ff

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/2a4954c4f075adc462344059696023e6a5f0b5ff
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