Philipp Hörist pushed to branch master at gajim / gajim
Commits:
-
a9e1ac97
by lovetox at 2020-10-19T15:29:24+02:00
-
e0cc2916
by lovetox at 2020-10-19T17:03:57+02:00
-
5bc09e09
by lovetox at 2020-10-19T17:04:09+02:00
-
20344c9c
by lovetox at 2020-10-19T17:04:23+02:00
-
1e5f7000
by lovetox at 2020-10-19T17:06:36+02:00
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:
| ... | ... | @@ -27,7 +27,9 @@ from nbxmpp.const import Mode |
| 27 | 27 |
from nbxmpp.const import StreamError
|
| 28 | 28 |
from nbxmpp.const import ConnectionProtocol
|
| 29 | 29 |
from nbxmpp.const import ConnectionType
|
| 30 |
-from nbxmpp.util import is_error_result
|
|
| 30 |
+from nbxmpp.errors import StanzaError
|
|
| 31 |
+from nbxmpp.errors import MalformedStanzaError
|
|
| 32 |
+from nbxmpp.errors import RegisterStanzaError
|
|
| 31 | 33 |
|
| 32 | 34 |
from gajim.common import app
|
| 33 | 35 |
from gajim.common import configpaths
|
| ... | ... | @@ -46,7 +48,6 @@ from gajim.gtk.assistant import SuccessPage |
| 46 | 48 |
from gajim.gtk.dataform import DataFormWidget
|
| 47 | 49 |
from gajim.gtk.util import get_builder
|
| 48 | 50 |
from gajim.gtk.util import open_window
|
| 49 |
-from gajim.gtk.util import ensure_not_destroyed
|
|
| 50 | 51 |
|
| 51 | 52 |
|
| 52 | 53 |
log = logging.getLogger('gajim.gtk.account_wizard')
|
| ... | ... | @@ -425,12 +426,13 @@ class AccountWizard(Assistant): |
| 425 | 426 |
i += 1
|
| 426 | 427 |
return domain
|
| 427 | 428 |
|
| 428 |
- @ensure_not_destroyed
|
|
| 429 |
- def _on_register_form(self, result):
|
|
| 430 |
- if is_error_result(result):
|
|
| 429 |
+ def _on_register_form(self, task):
|
|
| 430 |
+ try:
|
|
| 431 |
+ result = task.finish()
|
|
| 432 |
+ except (StanzaError, MalformedStanzaError) as error:
|
|
| 431 | 433 |
self._show_error_page(_('Error'),
|
| 432 | 434 |
_('Error'),
|
| 433 |
- result.get_text())
|
|
| 435 |
+ error.get_text())
|
|
| 434 | 436 |
self._disconnect()
|
| 435 | 437 |
return
|
| 436 | 438 |
|
| ... | ... | @@ -460,14 +462,36 @@ class AccountWizard(Assistant): |
| 460 | 462 |
|
| 461 | 463 |
form = self.get_page('form').get_submit_form()
|
| 462 | 464 |
self._client.get_module('Register').submit_register_form(
|
| 463 |
- None,
|
|
| 464 | 465 |
form,
|
| 465 | 466 |
callback=self._on_register_result)
|
| 466 | 467 |
|
| 467 |
- @ensure_not_destroyed
|
|
| 468 |
- def _on_register_result(self, result):
|
|
| 469 |
- if is_error_result(result):
|
|
| 470 |
- self._on_register_error(result)
|
|
| 468 |
+ def _on_register_result(self, task):
|
|
| 469 |
+ try:
|
|
| 470 |
+ task.finish()
|
|
| 471 |
+ except RegisterStanzaError as error:
|
|
| 472 |
+ self._set_error_text(error)
|
|
| 473 |
+ if error.type != 'modify':
|
|
| 474 |
+ self.get_page('form').remove_form()
|
|
| 475 |
+ self._disconnect()
|
|
| 476 |
+ return
|
|
| 477 |
+ |
|
| 478 |
+ register_data = error.get_data()
|
|
| 479 |
+ form = register_data.form
|
|
| 480 |
+ if register_data.form is None:
|
|
| 481 |
+ form = register_data.fields_form
|
|
| 482 |
+ |
|
| 483 |
+ if form is not None:
|
|
| 484 |
+ self.get_page('form').add_form(form)
|
|
| 485 |
+ |
|
| 486 |
+ else:
|
|
| 487 |
+ self.get_page('form').remove_form()
|
|
| 488 |
+ self._disconnect()
|
|
| 489 |
+ return
|
|
| 490 |
+ |
|
| 491 |
+ except (StanzaError, MalformedStanzaError) as error:
|
|
| 492 |
+ self._set_error_text(error)
|
|
| 493 |
+ self.get_page('form').remove_form()
|
|
| 494 |
+ self._disconnect()
|
|
| 471 | 495 |
return
|
| 472 | 496 |
|
| 473 | 497 |
username, password = self.get_page('form').get_credentials()
|
| ... | ... | @@ -489,31 +513,13 @@ class AccountWizard(Assistant): |
| 489 | 513 |
self.get_page('form').remove_form()
|
| 490 | 514 |
self._disconnect()
|
| 491 | 515 |
|
| 492 |
- def _on_register_error(self, result):
|
|
| 493 |
- error_text = result.get_text()
|
|
| 516 |
+ def _set_error_text(self, error):
|
|
| 517 |
+ error_text = error.get_text()
|
|
| 494 | 518 |
if not error_text:
|
| 495 | 519 |
error_text = _('The server rejected the registration '
|
| 496 | 520 |
'without an error message')
|
| 497 | 521 |
self._show_error_page(_('Error'), _('Error'), error_text)
|
| 498 | 522 |
|
| 499 |
- register_data = result.get_data()
|
|
| 500 |
- if register_data is None:
|
|
| 501 |
- # IQ error did not have the payload included
|
|
| 502 |
- self.get_page('form').remove_form()
|
|
| 503 |
- self._disconnect()
|
|
| 504 |
- return
|
|
| 505 |
- |
|
| 506 |
- form = register_data.form
|
|
| 507 |
- if register_data.form is None:
|
|
| 508 |
- form = register_data.fields_form
|
|
| 509 |
- |
|
| 510 |
- if form is not None:
|
|
| 511 |
- self.get_page('form').add_form(form)
|
|
| 512 |
- |
|
| 513 |
- else:
|
|
| 514 |
- self.get_page('form').remove_form()
|
|
| 515 |
- self._disconnect()
|
|
| 516 |
- |
|
| 517 | 523 |
def _on_destroy(self, *args):
|
| 518 | 524 |
self._disconnect()
|
| 519 | 525 |
self._destroyed = True
|
| ... | ... | @@ -49,6 +49,7 @@ class Assistant(Gtk.ApplicationWindow, EventHelper): |
| 49 | 49 |
self.set_default_size(width, height)
|
| 50 | 50 |
self.set_resizable(True)
|
| 51 | 51 |
self.set_transient_for(transient_for)
|
| 52 |
+ self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
|
|
| 52 | 53 |
|
| 53 | 54 |
self._pages = {}
|
| 54 | 55 |
self._buttons = {}
|
| ... | ... | @@ -16,7 +16,8 @@ import logging |
| 16 | 16 |
|
| 17 | 17 |
from gi.repository import Gtk
|
| 18 | 18 |
|
| 19 |
-from nbxmpp.util import is_error_result
|
|
| 19 |
+from nbxmpp.errors import StanzaError
|
|
| 20 |
+from nbxmpp.errors import ChangePasswordStanzaError
|
|
| 20 | 21 |
|
| 21 | 22 |
from gajim.common import app
|
| 22 | 23 |
from gajim.common.i18n import _
|
| ... | ... | @@ -26,7 +27,6 @@ from gajim.common.helpers import to_user_string |
| 26 | 27 |
from gajim.gtk.assistant import Assistant
|
| 27 | 28 |
from gajim.gtk.assistant import Page
|
| 28 | 29 |
from gajim.gtk.dataform import DataFormWidget
|
| 29 |
-from gajim.gtk.util import ensure_not_destroyed
|
|
| 30 | 30 |
|
| 31 | 31 |
log = logging.getLogger('gajim.gtk.change_password')
|
| 32 | 32 |
|
| ... | ... | @@ -119,17 +119,20 @@ class ChangePassword(Assistant): |
| 119 | 119 |
self._con.get_module('Register').change_password(
|
| 120 | 120 |
password, callback=self._on_change_password)
|
| 121 | 121 |
|
| 122 |
- @ensure_not_destroyed
|
|
| 123 |
- def _on_change_password(self, result):
|
|
| 124 |
- if is_error_result(result):
|
|
| 125 |
- error_text = to_user_string(result)
|
|
| 122 |
+ def _on_change_password(self, task):
|
|
| 123 |
+ try:
|
|
| 124 |
+ task.finish()
|
|
| 125 |
+ except ChangePasswordStanzaError as error:
|
|
| 126 |
+ self.get_page('next_stage').set_form(error.get_form())
|
|
| 127 |
+ self.show_page('next_stage', Gtk.StackTransitionType.SLIDE_LEFT)
|
|
| 128 |
+ |
|
| 129 |
+ except StanzaError as error:
|
|
| 130 |
+ error_text = to_user_string(error)
|
|
| 126 | 131 |
self.get_page('error').set_text(error_text)
|
| 127 | 132 |
self.show_page('error', Gtk.StackTransitionType.SLIDE_LEFT)
|
| 128 |
- elif result.successful:
|
|
| 129 |
- self.show_page('success')
|
|
| 133 |
+ |
|
| 130 | 134 |
else:
|
| 131 |
- self.get_page('next_stage').set_form(result.form)
|
|
| 132 |
- self.show_page('next_stage', Gtk.StackTransitionType.SLIDE_LEFT)
|
|
| 135 |
+ self.show_page('success')
|
|
| 133 | 136 |
|
| 134 | 137 |
def _on_destroy(self, *args):
|
| 135 | 138 |
self._destroyed = True
|
| ... | ... | @@ -16,7 +16,7 @@ import logging |
| 16 | 16 |
|
| 17 | 17 |
from gi.repository import Gtk
|
| 18 | 18 |
|
| 19 |
-from nbxmpp.util import is_error_result
|
|
| 19 |
+from nbxmpp.errors import StanzaError
|
|
| 20 | 20 |
|
| 21 | 21 |
from gajim.common import app
|
| 22 | 22 |
from gajim.common import ged
|
| ... | ... | @@ -26,7 +26,6 @@ from gajim.common.helpers import event_filter |
| 26 | 26 |
|
| 27 | 27 |
from gajim.gtk.assistant import Assistant
|
| 28 | 28 |
from gajim.gtk.assistant import Page
|
| 29 |
-from gajim.gtk.util import ensure_not_destroyed
|
|
| 30 | 29 |
|
| 31 | 30 |
log = logging.getLogger('gajim.gtk.remove_account')
|
| 32 | 31 |
|
| ... | ... | @@ -149,12 +148,13 @@ class RemoveAccount(Assistant): |
| 149 | 148 |
self._con.disconnect(gracefully=True, reconnect=False)
|
| 150 | 149 |
self._account_removed = True
|
| 151 | 150 |
|
| 152 |
- @ensure_not_destroyed
|
|
| 153 |
- def _on_remove_response(self, result):
|
|
| 154 |
- if is_error_result(result):
|
|
| 151 |
+ def _on_remove_response(self, task):
|
|
| 152 |
+ try:
|
|
| 153 |
+ task.finish()
|
|
| 154 |
+ except StanzaError as error:
|
|
| 155 | 155 |
self._con.set_remove_account(False)
|
| 156 | 156 |
|
| 157 |
- error_text = to_user_string(result)
|
|
| 157 |
+ error_text = to_user_string(error)
|
|
| 158 | 158 |
self.get_page('error').set_text(error_text)
|
| 159 | 159 |
self.show_page('error')
|
| 160 | 160 |
return
|
| ... | ... | @@ -346,7 +346,10 @@ class XMLConsoleWindow(Gtk.ApplicationWindow, EventHelper): |
| 346 | 346 |
self._print_stanza(event, 'outgoing')
|
| 347 | 347 |
|
| 348 | 348 |
def _print_stanza(self, event, kind):
|
| 349 |
- account_label = app.get_account_label(event.account)
|
|
| 349 |
+ if event.account == 'AccountWizard':
|
|
| 350 |
+ account_label = 'Account Wizard'
|
|
| 351 |
+ else:
|
|
| 352 |
+ account_label = app.get_account_label(event.account)
|
|
| 350 | 353 |
|
| 351 | 354 |
stanza = event.stanza
|
| 352 | 355 |
if not isinstance(stanza, str):
|