From 9019cf24b4ebcfa081acfb5d1277c4e07e29866c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= Date: Sun, 2 Oct 2022 20:31:59 +0200 Subject: refactor: ChatListRow: Move connecting contact signals into own method --- gajim/gtk/chat_list_row.py | 50 ++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/gajim/gtk/chat_list_row.py b/gajim/gtk/chat_list_row.py index f8996873d..1bfe7f51e 100644 --- a/gajim/gtk/chat_list_row.py +++ b/gajim/gtk/chat_list_row.py @@ -82,29 +82,9 @@ class ChatListRow(Gtk.ListBoxRow): self._pinned_label = PinnedHeader() self._client = app.get_client(account) - self.contact = self._client.get_module('Contacts').get_contact(jid) - - if isinstance(self.contact, BareContact): - self.contact.connect('presence-update', self._on_presence_update) - self.contact.connect('chatstate-update', self._on_chatstate_update) - self.contact.connect('nickname-update', self._on_nickname_update) - self.contact.connect('caps-update', self._on_avatar_update) - self.contact.connect('avatar-update', self._on_avatar_update) - - elif isinstance(self.contact, GroupchatContact): - self.contact.connect('avatar-update', self._on_avatar_update) - - elif isinstance(self.contact, GroupchatParticipant): - self.contact.connect('chatstate-update', self._on_chatstate_update) - self.contact.connect('user-joined', self._on_muc_user_update) - self.contact.connect('user-left', self._on_muc_user_update) - self.contact.connect('user-avatar-update', self._on_muc_user_update) - self.contact.connect('user-status-show-changed', - self._on_muc_user_update) - self.contact.room.connect('room-left', self._on_muc_update) - self.contact.room.connect('room-destroyed', self._on_muc_update) - self.contact.room.connect('room-kicked', self._on_muc_update) + self.contact = self._client.get_module('Contacts').get_contact(jid) + self._connect_contact_signals() self.contact_name: str = self.contact.name self.timestamp: float = 0 @@ -471,6 +451,32 @@ class ChatListRow(Gtk.ListBoxRow): byte_data = pickle.dumps((self.account, self.jid)) selection_data.set(drop_type, 8, byte_data) + def _connect_contact_signals(self) -> None: + if isinstance(self.contact, BareContact): + self.contact.connect('presence-update', self._on_presence_update) + self.contact.connect('chatstate-update', self._on_chatstate_update) + self.contact.connect('nickname-update', self._on_nickname_update) + self.contact.connect('caps-update', self._on_avatar_update) + self.contact.connect('avatar-update', self._on_avatar_update) + + elif isinstance(self.contact, GroupchatContact): + self.contact.connect('avatar-update', self._on_avatar_update) + + elif isinstance(self.contact, GroupchatParticipant): + self.contact.connect('chatstate-update', self._on_chatstate_update) + self.contact.connect('user-joined', self._on_muc_user_update) + self.contact.connect('user-left', self._on_muc_user_update) + self.contact.connect('user-avatar-update', self._on_muc_user_update) + self.contact.connect('user-status-show-changed', + self._on_muc_user_update) + + self.contact.room.connect('room-left', self._on_muc_update) + self.contact.room.connect('room-destroyed', self._on_muc_update) + self.contact.room.connect('room-kicked', self._on_muc_update) + + else: + raise TypeError('Unkown contact type: %s' % type(self.contact)) + def _on_presence_update(self, _contact: ChatContactT, _signal_name: str -- cgit v1.2.3