Philipp Hörist pushed to branch master at gajim / gajim
Commits: acf179da by lovetox at 2022-07-27T12:38:16+02:00 change: Raise required nbxmpp version to 3.1.1
- - - - - d5c5a609 by lovetox at 2022-07-27T15:05:47+02:00 refactor: Be more specific when registering presence handlers
- - - - -
9 changed files:
- debian/control - gajim/common/modules/caps.py - gajim/common/modules/chatstates.py - gajim/common/modules/muc.py - gajim/common/modules/presence.py - gajim/common/modules/roster.py - gajim/common/modules/vcard_avatars.py - gajim/gajim.py - setup.cfg
Changes:
===================================== debian/control ===================================== @@ -11,7 +11,7 @@ Build-Depends: python3-css-parser, python3-gi, python3-gi-cairo, - python3-nbxmpp-nightly (>=20220501), + python3-nbxmpp-nightly (>=20220727), python3-setuptools, python3-pil, gir1.2-gtk-3.0, @@ -32,7 +32,7 @@ Depends: python3-gi (>= 3.32.0), python3-gi-cairo (>= 1.14.0~), python3-idna, - python3-nbxmpp-nightly (>=20220501), + python3-nbxmpp-nightly (>=20220727), python3-openssl (>= 0.19), python3-precis-i18n, python3-keyring,
===================================== gajim/common/modules/caps.py ===================================== @@ -59,6 +59,7 @@ def __init__(self, con: types.Client) -> None: self.handlers = [ StanzaHandler(name='presence', callback=self._entity_caps, + typ='available', ns=Namespace.CAPS, priority=51), ] @@ -103,8 +104,6 @@ def _entity_caps(self, _stanza: Presence, properties: PresenceProperties ) -> None: - if properties.type.is_error or properties.type.is_unavailable: - return
if properties.is_self_presence: return
===================================== gajim/common/modules/chatstates.py ===================================== @@ -57,7 +57,13 @@ def __init__(self, con: types.Client) -> None:
self.handlers = [ StanzaHandler(name='presence', - callback=self._presence_received), + callback=self._presence_received, + typ='error', + priority=50), + StanzaHandler(name='presence', + callback=self._presence_received, + typ='unavailable', + priority=50), StanzaHandler(name='message', callback=self._process_chatstate, ns=Namespace.CHATSTATES, @@ -117,8 +123,6 @@ def _presence_received(self, _stanza: Presence, properties: PresenceProperties ) -> None: - if not properties.type.is_unavailable and not properties.type.is_error: - return
if properties.is_self_bare: return
===================================== gajim/common/modules/muc.py ===================================== @@ -91,6 +91,12 @@ def __init__(self, con: types.Client) -> None: self.handlers = [ StanzaHandler(name='presence', callback=self._on_muc_user_presence, + typ='available', + ns=Namespace.MUC_USER, + priority=49), + StanzaHandler(name='presence', + callback=self._on_muc_user_presence, + typ='unavailable', ns=Namespace.MUC_USER, priority=49), StanzaHandler(name='presence', @@ -474,6 +480,7 @@ def _on_error_presence(self, stanza: Presence, properties: PresenceProperties ) -> None: + room_jid = properties.jid.bare muc_data = self._mucs.get(room_jid) if muc_data is None: @@ -524,8 +531,6 @@ def _on_muc_user_presence(self, stanza: Presence, properties: PresenceProperties ) -> None: - if properties.type == PresenceType.ERROR: - return
room_jid = str(properties.muc_jid) if room_jid not in self._mucs:
===================================== gajim/common/modules/presence.py ===================================== @@ -57,6 +57,11 @@ def __init__(self, con: types.Client) -> None: self.handlers = [ StanzaHandler(name='presence', callback=self._presence_received, + typ='available', + priority=50), + StanzaHandler(name='presence', + callback=self._presence_received, + typ='unavailable', priority=50), StanzaHandler(name='presence', callback=self._subscribe_received, @@ -90,6 +95,7 @@ def _presence_received(self, stanza: nbxmpp.protocol.Presence, properties: PresenceProperties ) -> None: + if properties.from_muc: # MUC occupant presences are already handled in MUC module return @@ -108,10 +114,6 @@ def _presence_received(self, contact = self._con.get_module('Contacts').get_contact(properties.jid) contact.update_presence(presence_data)
- if properties.type == PresenceType.ERROR: - self._log.info('Error: %s %s', properties.jid, properties.error) - return - if properties.is_self_presence: app.ged.raise_event(ShowChanged(account=self._account, show=properties.show.value))
===================================== gajim/common/modules/roster.py ===================================== @@ -51,8 +51,6 @@ def __init__(self, client: types.Client) -> None: BaseModule.__init__(self, client)
self.handlers = [ - # StanzaHandler(name='presence', - # callback=self._presence_received), StanzaHandler(name='iq', callback=self._process_roster_push, typ='set',
===================================== gajim/common/modules/vcard_avatars.py ===================================== @@ -42,6 +42,7 @@ def __init__(self, con: types.Client) -> None:
self.handlers = [ StanzaHandler(name='presence', + typ='available', callback=self._presence_received, ns=Namespace.VCARD_UPDATE, priority=51), @@ -106,8 +107,6 @@ def _presence_received(self, _stanza: Presence, properties: PresenceProperties ) -> None: - if not properties.type.is_available: - return
if properties.avatar_state in (AvatarState.IGNORE, AvatarState.NOT_READY):
===================================== gajim/gajim.py ===================================== @@ -30,7 +30,7 @@ from gajim.common import i18n
-_MIN_NBXMPP_VER = '3.0.0' +_MIN_NBXMPP_VER = '3.1.1' _MIN_GTK_VER = '3.22.27' _MIN_CAIRO_VER = '1.16.0' _MIN_PYGOBJECT_VER = '3.32.0'
===================================== setup.cfg ===================================== @@ -40,7 +40,7 @@ test_suite = test install_requires = css-parser keyring - nbxmpp>=3.0.0,<4.0.0 + nbxmpp>=3.1.1,<4.0.0 packaging pillow precis-i18n>=1.0.0
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/0fcef58dd835c35d7fe09e9cd36be11e...