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


Commits:
ae699c18 by lovetox at 2022-08-21T11:29:53+02:00
refactor: ChatBanner: Use asserts instead of return

There is no case where client or contact should be None

- - - - -
32c0d3e3 by lovetox at 2022-08-21T11:42:29+02:00
refactor: Chatstates: Fix TODOs and refactor checks for different contacts

- Lower logging level to DEBUG
- Don’t send chatstates to unsubscribed contacts

- - - - -


2 changed files:

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


Changes:

=====================================
gajim/common/modules/chatstates.py
=====================================
@@ -36,6 +36,8 @@
 from gajim.common.const import ClientState
 from gajim.common.structs import OutgoingMessage
 from gajim.common.modules.base import BaseModule
+from gajim.common.modules.contacts import GroupchatParticipant
+from gajim.common.modules.contacts import BareContact
 
 INACTIVE_AFTER = 60
 PAUSED_AFTER = 10
@@ -270,9 +272,9 @@ def set_chatstate(self, contact: types.ChatContactT, state: 
State) -> None:
         if setting == 'disabled':
             # Send a last 'active' state after user disabled chatstates
             if current_state is not None:
-                self._log.info('Disabled for %s', contact.jid)
+                self._log.info('Disabled for %s', contact)
                 self._log.info('Send last state: %-10s - %s',
-                               State.ACTIVE, contact.jid)
+                               State.ACTIVE, contact)
 
                 self._send_chatstate(contact, State.ACTIVE)
 
@@ -281,22 +283,23 @@ def set_chatstate(self, contact: types.ChatContactT, 
state: State) -> None:
             self._last_keyboard_activity.pop(contact.jid, None)
             return
 
-        if not contact.is_groupchat:
-            # Don’t leak presence to contacts
-            # which are not allowed to see our status
-            if not contact.is_pm_contact:
-                # TODO
-                # if contact and contact.sub in ('to', 'none'):
-                #     self._log.info('Contact not subscribed: %s', contact.jid)
-                #     return
-                pass
+        if isinstance(contact, BareContact):
+            if not contact.is_subscribed:
+                self._log.debug('Contact not subscribed: %s', contact)
+                return
 
             if not contact.is_available:
-                self._log.info('Contact offline: %s', contact.jid)
+                self._log.debug('Contact offline: %s', contact)
                 return
 
-            if not contact.supports(Namespace.CHATSTATES):
-                self._log.info('Chatstates not supported: %s', contact.jid)
+        elif isinstance(contact, GroupchatParticipant):
+            if not contact.is_available:
+                self._log.debug('Contact offline: %s', contact)
+                return
+
+        else:
+            if not contact.is_joined:
+                self._log.debug('Groupchat not joined: %s', contact)
                 return
 
         if state in (State.ACTIVE, State.COMPOSING):
@@ -309,7 +312,7 @@ def set_chatstate(self, contact: types.ChatContactT, state: 
State) -> None:
         if current_state == state:
             return
 
-        self._log.info('Send: %-10s - %s', state, contact.jid)
+        self._log.info('Send: %-10s - %s', state, contact)
 
         self._send_chatstate(contact, state)
 


=====================================
gajim/gtk/chat_banner.py
=====================================
@@ -240,8 +240,8 @@ def _update_avatar(self) -> None:
         self._ui.avatar_image.set_from_surface(surface)
 
     def _update_content(self) -> None:
-        if self._client is None or self._contact is None:
-            return
+        assert self._contact is not None
+        assert self._client is not None
 
         name = self._contact.name
 



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/12669c512656b01180a2871f5a8f1b1e8b115687...32c0d3e35a04dba1e312fe459ee687b3aa7b4685

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/12669c512656b01180a2871f5a8f1b1e8b115687...32c0d3e35a04dba1e312fe459ee687b3aa7b4685
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
Commits@gajim.org
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to