From c13ae1b932947dd102f8e3b20492a885f14a8198 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Sat, 29 Sep 2018 23:09:32 +0200 Subject: [PATCH] Print the error given by the server when /bookmark fails. --- poezio/core/commands.py | 20 ++++---------------- poezio/core/handlers.py | 22 ++++++++++++++++++---- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/poezio/core/commands.py b/poezio/core/commands.py index eb7595ee..5c8199c0 100644 --- a/poezio/core/commands.py +++ b/poezio/core/commands.py @@ -449,14 +449,9 @@ class CommandCore: if password: bookmark.password = password - def callback(iq): - if iq["type"] != "error": - self.core.information('Bookmark added.', 'Info') - else: - self.core.information("Could not add the bookmarks.", "Info") - self.core.bookmarks.save_local() - self.core.bookmarks.save_remote(self.core.xmpp, callback) + self.core.bookmarks.save_remote(self.core.xmpp, + self.core.handler.on_bookmark_result) def _add_wildcard_bookmarks(self, method): new_bookmarks = [] @@ -471,16 +466,9 @@ class CommandCore: self.core.bookmarks.remove(bookmark) new_bookmarks.extend(self.core.bookmarks.bookmarks) self.core.bookmarks.set(new_bookmarks) - - def _cb(iq): - if iq["type"] != "error": - self.core.information("Bookmarks saved.", "Info") - else: - self.core.information("Could not save the remote bookmarks.", - "Info") - self.core.bookmarks.save_local() - self.core.bookmarks.save_remote(self.core.xmpp, _cb) + self.core.bookmarks.save_remote(self.core.xmpp, + self.core.handler.on_bookmark_result) @command_args_parser.ignored def bookmarks(self): diff --git a/poezio/core/handlers.py b/poezio/core/handlers.py index 36bc6821..0e655d68 100644 --- a/poezio/core/handlers.py +++ b/poezio/core/handlers.py @@ -891,16 +891,20 @@ class HandlerCore: _composing_tab_state(tab, state) self.core.refresh_tab_win() + @staticmethod + def _format_error(error): + error_condition = error['condition'] + error_text = error['text'] + return '%s: %s' % (error_condition, + error_text) if error_text else error_condition + def on_version_result(self, iq): """ Handle the result of a /version command. """ jid = iq['from'] if iq['type'] == 'error': - error_condition = iq['error']['condition'] - error_text = iq['error']['text'] - reply = '%s: %s' % (error_condition, - error_text) if error_text else error_condition + reply = self._format_error(iq['error']) return self.core.information( 'Could not get the software ' 'version from %s: %s' % (jid, reply), 'Warning') @@ -911,6 +915,16 @@ class HandlerCore: 'an unknown platform')) self.core.information(version, 'Info') + def on_bookmark_result(self, iq): + """ + Handle the result of a /bookmark commands. + """ + if iq['type'] == 'error': + reply = self._format_error(iq['error']) + return self.core.information( + 'Could not set the remote bookmarks: %s' % reply, 'Warning') + self.core.information('Bookmarks saved', 'Info') + ### subscription-related handlers ### def on_roster_update(self, iq):