Philipp Hörist pushed to branch master at gajim / gajim
Commits: a9e1ac97 by lovetox at 2020-10-19T15:29:24+02:00 XMLConsole: Fix displaying AccountWizard stanzas
- - - - - e0cc2916 by lovetox at 2020-10-19T17:03:57+02:00 AccountWizard: Adapt to nbxmpp changes
- - - - - 5bc09e09 by lovetox at 2020-10-19T17:04:09+02:00 ChangePassword: Adapt to nbxmpp changes
- - - - - 20344c9c by lovetox at 2020-10-19T17:04:23+02:00 RemoveAccount: Adapt to nbxmpp changes
- - - - - 1e5f7000 by lovetox at 2020-10-19T17:06:36+02:00 Assistant: Set DIALOG type hint
- - - - -
5 changed files:
- gajim/gtk/account_wizard.py - gajim/gtk/assistant.py - gajim/gtk/change_password.py - gajim/gtk/remove_account.py - gajim/gtk/xml_console.py
Changes:
===================================== gajim/gtk/account_wizard.py ===================================== @@ -27,7 +27,9 @@ from nbxmpp.const import Mode from nbxmpp.const import StreamError from nbxmpp.const import ConnectionProtocol from nbxmpp.const import ConnectionType -from nbxmpp.util import is_error_result +from nbxmpp.errors import StanzaError +from nbxmpp.errors import MalformedStanzaError +from nbxmpp.errors import RegisterStanzaError
from gajim.common import app from gajim.common import configpaths @@ -46,7 +48,6 @@ from gajim.gtk.assistant import SuccessPage from gajim.gtk.dataform import DataFormWidget from gajim.gtk.util import get_builder from gajim.gtk.util import open_window -from gajim.gtk.util import ensure_not_destroyed
log = logging.getLogger('gajim.gtk.account_wizard') @@ -425,12 +426,13 @@ class AccountWizard(Assistant): i += 1 return domain
- @ensure_not_destroyed - def _on_register_form(self, result): - if is_error_result(result): + def _on_register_form(self, task): + try: + result = task.finish() + except (StanzaError, MalformedStanzaError) as error: self._show_error_page(_('Error'), _('Error'), - result.get_text()) + error.get_text()) self._disconnect() return
@@ -460,14 +462,36 @@ class AccountWizard(Assistant):
form = self.get_page('form').get_submit_form() self._client.get_module('Register').submit_register_form( - None, form, callback=self._on_register_result)
- @ensure_not_destroyed - def _on_register_result(self, result): - if is_error_result(result): - self._on_register_error(result) + def _on_register_result(self, task): + try: + task.finish() + except RegisterStanzaError as error: + self._set_error_text(error) + if error.type != 'modify': + self.get_page('form').remove_form() + self._disconnect() + return + + register_data = error.get_data() + form = register_data.form + if register_data.form is None: + form = register_data.fields_form + + if form is not None: + self.get_page('form').add_form(form) + + else: + self.get_page('form').remove_form() + self._disconnect() + return + + except (StanzaError, MalformedStanzaError) as error: + self._set_error_text(error) + self.get_page('form').remove_form() + self._disconnect() return
username, password = self.get_page('form').get_credentials() @@ -489,31 +513,13 @@ class AccountWizard(Assistant): self.get_page('form').remove_form() self._disconnect()
- def _on_register_error(self, result): - error_text = result.get_text() + def _set_error_text(self, error): + error_text = error.get_text() if not error_text: error_text = _('The server rejected the registration ' 'without an error message') self._show_error_page(_('Error'), _('Error'), error_text)
- register_data = result.get_data() - if register_data is None: - # IQ error did not have the payload included - self.get_page('form').remove_form() - self._disconnect() - return - - form = register_data.form - if register_data.form is None: - form = register_data.fields_form - - if form is not None: - self.get_page('form').add_form(form) - - else: - self.get_page('form').remove_form() - self._disconnect() - def _on_destroy(self, *args): self._disconnect() self._destroyed = True
===================================== gajim/gtk/assistant.py ===================================== @@ -49,6 +49,7 @@ class Assistant(Gtk.ApplicationWindow, EventHelper): self.set_default_size(width, height) self.set_resizable(True) self.set_transient_for(transient_for) + self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
self._pages = {} self._buttons = {}
===================================== gajim/gtk/change_password.py ===================================== @@ -16,7 +16,8 @@ import logging
from gi.repository import Gtk
-from nbxmpp.util import is_error_result +from nbxmpp.errors import StanzaError +from nbxmpp.errors import ChangePasswordStanzaError
from gajim.common import app from gajim.common.i18n import _ @@ -26,7 +27,6 @@ from gajim.common.helpers import to_user_string from gajim.gtk.assistant import Assistant from gajim.gtk.assistant import Page from gajim.gtk.dataform import DataFormWidget -from gajim.gtk.util import ensure_not_destroyed
log = logging.getLogger('gajim.gtk.change_password')
@@ -119,17 +119,20 @@ class ChangePassword(Assistant): self._con.get_module('Register').change_password( password, callback=self._on_change_password)
- @ensure_not_destroyed - def _on_change_password(self, result): - if is_error_result(result): - error_text = to_user_string(result) + def _on_change_password(self, task): + try: + task.finish() + except ChangePasswordStanzaError as error: + self.get_page('next_stage').set_form(error.get_form()) + self.show_page('next_stage', Gtk.StackTransitionType.SLIDE_LEFT) + + except StanzaError as error: + error_text = to_user_string(error) self.get_page('error').set_text(error_text) self.show_page('error', Gtk.StackTransitionType.SLIDE_LEFT) - elif result.successful: - self.show_page('success') + else: - self.get_page('next_stage').set_form(result.form) - self.show_page('next_stage', Gtk.StackTransitionType.SLIDE_LEFT) + self.show_page('success')
def _on_destroy(self, *args): self._destroyed = True
===================================== gajim/gtk/remove_account.py ===================================== @@ -16,7 +16,7 @@ import logging
from gi.repository import Gtk
-from nbxmpp.util import is_error_result +from nbxmpp.errors import StanzaError
from gajim.common import app from gajim.common import ged @@ -26,7 +26,6 @@ from gajim.common.helpers import event_filter
from gajim.gtk.assistant import Assistant from gajim.gtk.assistant import Page -from gajim.gtk.util import ensure_not_destroyed
log = logging.getLogger('gajim.gtk.remove_account')
@@ -149,12 +148,13 @@ class RemoveAccount(Assistant): self._con.disconnect(gracefully=True, reconnect=False) self._account_removed = True
- @ensure_not_destroyed - def _on_remove_response(self, result): - if is_error_result(result): + def _on_remove_response(self, task): + try: + task.finish() + except StanzaError as error: self._con.set_remove_account(False)
- error_text = to_user_string(result) + error_text = to_user_string(error) self.get_page('error').set_text(error_text) self.show_page('error') return
===================================== gajim/gtk/xml_console.py ===================================== @@ -346,7 +346,10 @@ class XMLConsoleWindow(Gtk.ApplicationWindow, EventHelper): self._print_stanza(event, 'outgoing')
def _print_stanza(self, event, kind): - account_label = app.get_account_label(event.account) + if event.account == 'AccountWizard': + account_label = 'Account Wizard' + else: + account_label = app.get_account_label(event.account)
stanza = event.stanza if not isinstance(stanza, str):
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/30f2b9758cab02f17a679474197aa723...