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]