diff options
author | Philipp Hörist <philipp@hoerist.com> | 2023-04-17 21:53:05 +0300 |
---|---|---|
committer | Philipp Hörist <philipp@hoerist.com> | 2023-04-17 21:58:16 +0300 |
commit | 5f77a2545226bc9d0e0782e44744af3cc54358c7 (patch) | |
tree | 656b41729e20c7ebdcc65af67f2676ee2331a951 | |
parent | 7be645e9c5d56d455832b32a4aebbc5dd30dfa8e (diff) |
refactor: Don’t pass nbxmpp errors and properties to GUI layer
Process as much as possible in the common module
-rw-r--r-- | gajim/common/events.py | 2 | ||||
-rw-r--r-- | gajim/common/modules/muc.py | 27 | ||||
-rw-r--r-- | gajim/gtk/chat_stack.py | 29 | ||||
-rw-r--r-- | gajim/gtk/control.py | 4 |
4 files changed, 28 insertions, 34 deletions
diff --git a/gajim/common/events.py b/gajim/common/events.py index 2f76f604a..92496c5b0 100644 --- a/gajim/common/events.py +++ b/gajim/common/events.py @@ -711,7 +711,7 @@ class MUCRoomConfigFinished(ApplicationEvent): class MUCRoomPresenceError(ApplicationEvent): name: str = field(init=False, default='muc-room-presence-error') timestamp: float - error: Any + error: str @dataclass diff --git a/gajim/common/modules/muc.py b/gajim/common/modules/muc.py index 2f36492f9..e46f67bfc 100644 --- a/gajim/common/modules/muc.py +++ b/gajim/common/modules/muc.py @@ -306,7 +306,8 @@ class MUC(BaseModule): self._log.info('Disco %s failed: %s', error.jid, error.get_text()) room = self._get_contact(error.jid.bare) - room.notify('room-join-failed', error) + error_text = helpers.to_user_string(error) + room.notify('room-join-failed', error_text) return muc_data = self._mucs.get(result.info.jid) @@ -400,7 +401,8 @@ class MUC(BaseModule): self._log.info(error) room = self._get_contact(error.jid.bare) - room.notfiy('room-config-failed', error) + error_text = helpers.to_user_string(error) + room.notfiy('room-config-failed', error_text) return self._log.info('Configure room: %s', result.jid) @@ -433,7 +435,8 @@ class MUC(BaseModule): self._log.info(error) room = self._get_contact(error.jid.bare) - room.notfiy('room-config-failed', error) + error_text = helpers.to_user_string(error) + room.notfiy('room-config-failed', error_text) return self._con.get_module('Discovery').disco_muc( @@ -507,7 +510,7 @@ class MUC(BaseModule): elif properties.error.condition == 'not-authorized': self._remove_rejoin_timeout(room_jid) self._set_muc_state(room_jid, MUCJoinedState.PASSWORD_REQUEST) - room.notify('room-password-required', properties) + room.notify('room-password-required') else: self._set_muc_state(room_jid, MUCJoinedState.NOT_JOINED) @@ -516,14 +519,14 @@ class MUC(BaseModule): assert isinstance(properties.error, CommonError) muc_data.error_text = helpers.to_user_string( properties.error) - room.notify('room-join-failed', properties.error) + room.notify('room-join-failed', muc_data.error_text) elif muc_data.state == MUCJoinedState.CREATING: self._set_muc_state(room_jid, MUCJoinedState.NOT_JOINED) muc_data.error = 'creation-failed' assert isinstance(properties.error, CommonError) muc_data.error_text = helpers.to_user_string(properties.error) - room.notify('room-creation-failed', properties) + room.notify('room-creation-failed', muc_data.error_text) elif muc_data.state == MUCJoinedState.CAPTCHA_REQUEST: self._set_muc_state(room_jid, MUCJoinedState.CAPTCHA_FAILED) @@ -531,18 +534,19 @@ class MUC(BaseModule): muc_data.error = 'captcha-failed' assert isinstance(properties.error, CommonError) muc_data.error_text = helpers.to_user_string(properties.error) - room.notify('room-captcha-error', properties.error) + room.notify('room-captcha-error', muc_data.error_text) elif muc_data.state == MUCJoinedState.CAPTCHA_FAILED: self._set_muc_state(room_jid, MUCJoinedState.NOT_JOINED) else: + error = helpers.to_user_string(properties.error) event = events.MUCRoomPresenceError( timestamp=time.time(), - error=properties.error) + error=error) assert isinstance(room, GroupchatContact) app.storage.events.store(room, event) - room.notify('room-presence-error', properties) + room.notify('room-presence-error', event) def _on_muc_user_presence(self, _con: types.xmppClient, @@ -940,7 +944,7 @@ class MUC(BaseModule): self._remove_rejoin_timeout(properties.jid) room = self._get_contact(properties.jid.bare) - room.notify('room-captcha-challenge', properties) + room.notify('room-captcha-challenge') raise nbxmpp.NodeProcessed @@ -974,7 +978,8 @@ class MUC(BaseModule): return self._set_muc_state(error.jid, MUCJoinedState.CAPTCHA_FAILED) room = self._get_contact(error.jid) - room.notify('room-captcha-error', error) + error_text = helpers.to_user_string(error) + room.notify('room-captcha-error', error_text) def _on_config_change(self, _con: types.xmppClient, diff --git a/gajim/gtk/chat_stack.py b/gajim/gtk/chat_stack.py index 51a226e60..70f9f5e51 100644 --- a/gajim/gtk/chat_stack.py +++ b/gajim/gtk/chat_stack.py @@ -26,9 +26,7 @@ from gi.repository import Gdk from gi.repository import Gio from gi.repository import GLib from gi.repository import Gtk -from nbxmpp.errors import StanzaError from nbxmpp.protocol import JID -from nbxmpp.structs import MessageProperties from gajim.common import app from gajim.common import events @@ -266,16 +264,14 @@ class ChatStack(Gtk.Stack, EventHelper): def _on_room_password_required(self, _contact: GroupchatContact, - _signal_name: str, - _properties: MessageProperties + _signal_name: str ) -> None: self._show_chat_function_page(FunctionMode.PASSWORD_REQUEST) def _on_room_captcha_challenge(self, contact: GroupchatContact, - _signal_name: str, - _properties: MessageProperties + _signal_name: str ) -> None: self._show_chat_function_page(FunctionMode.CAPTCHA_REQUEST) @@ -283,39 +279,34 @@ class ChatStack(Gtk.Stack, EventHelper): def _on_room_captcha_error(self, _contact: GroupchatContact, _signal_name: str, - error: StanzaError + error: str ) -> None: - error_text = helpers.to_user_string(error) - self._show_chat_function_page(FunctionMode.CAPTCHA_ERROR, error_text) + self._show_chat_function_page(FunctionMode.CAPTCHA_ERROR, error) def _on_room_creation_failed(self, _contact: GroupchatContact, _signal_name: str, - properties: MessageProperties + error: str ) -> None: - assert properties.error is not None - error_text = helpers.to_user_string(properties.error) - self._show_chat_function_page(FunctionMode.CREATION_FAILED, error_text) + self._show_chat_function_page(FunctionMode.CREATION_FAILED, error) def _on_room_join_failed(self, _contact: GroupchatContact, _signal_name: str, - error: StanzaError + error: str ) -> None: - self._show_chat_function_page( - FunctionMode.JOIN_FAILED, helpers.to_user_string(error)) + self._show_chat_function_page(FunctionMode.JOIN_FAILED, error) def _on_room_config_failed(self, _contact: GroupchatContact, _signal_name: str, - error: StanzaError + error: str ) -> None: - self._show_chat_function_page( - FunctionMode.CONFIG_FAILED, helpers.to_user_string(error)) + self._show_chat_function_page(FunctionMode.CONFIG_FAILED) def _on_muc_state_changed(self, contact: GroupchatContact, diff --git a/gajim/gtk/control.py b/gajim/gtk/control.py index a59760e9c..94dda14be 100644 --- a/gajim/gtk/control.py +++ b/gajim/gtk/control.py @@ -39,7 +39,6 @@ from gajim.common.const import KindConstant from gajim.common.ged import EventHelper from gajim.common.helpers import AdditionalDataDict from gajim.common.helpers import get_retraction_text -from gajim.common.helpers import to_user_string from gajim.common.i18n import _ from gajim.common.modules.contacts import BareContact from gajim.common.modules.contacts import GroupchatContact @@ -1077,8 +1076,7 @@ class ChatControl(EventHelper): event: events.MUCRoomPresenceError ) -> None: - error_message = to_user_string(event.error) - self.add_info_message(_('Error: %s') % error_message) + self.add_info_message(_('Error: %s') % event.error) def _on_room_destroyed(self, _contact: GroupchatContact, |