diff options
author | Madhur Garg <madhurgarg96@gmail.com> | 2019-03-26 23:13:45 +0530 |
---|---|---|
committer | Madhur Garg <madhurgarg96@gmail.com> | 2019-03-30 17:25:42 +0530 |
commit | dd55845af76f57db2cb1bab87ad5ed86b65c9154 (patch) | |
tree | 5b346022a8bf10121b4f369246bc74ce8b1b24e6 /poezio/core/commands.py | |
parent | b5cca8687d16afafbbfcbd7f74a3c8aa8ca35108 (diff) | |
download | poezio-dd55845af76f57db2cb1bab87ad5ed86b65c9154.tar.gz poezio-dd55845af76f57db2cb1bab87ad5ed86b65c9154.tar.bz2 poezio-dd55845af76f57db2cb1bab87ad5ed86b65c9154.tar.xz poezio-dd55845af76f57db2cb1bab87ad5ed86b65c9154.zip |
Corrects the functionality of /add and /accept commands in all the tabs. Fixes #3395
Corrects the functionality of /add command in all tabs. Fixes #3395
Removed trailing whitespaces
Corrected general way of writing code.
Corrects the functionality of /add and /accept commands in all tabs. Fixes #3395
Diffstat (limited to 'poezio/core/commands.py')
-rw-r--r-- | poezio/core/commands.py | 54 |
1 files changed, 46 insertions, 8 deletions
diff --git a/poezio/core/commands.py b/poezio/core/commands.py index 6cf398ff..e785a93b 100644 --- a/poezio/core/commands.py +++ b/poezio/core/commands.py @@ -23,6 +23,8 @@ from poezio.bookmarks import Bookmark from poezio.common import safeJID from poezio.config import config, DEFAULT_CONFIG, options as config_opts from poezio import multiuserchat as muc +from poezio.contact import Contact +from poezio import windows from poezio.plugin import PluginConfig from poezio.roster import roster from poezio.theming import dump_tuple, get_theme @@ -508,7 +510,43 @@ class CommandCore: self.core.bookmarks.save(self.core.xmpp, callback=cb) else: self.core.information('No bookmark to remove', 'Info') - + + @command_args_parser.quoted(0, 1) + def command_accept(self, args): + """ + Accept a JID. Authorize it AND subscribe to it + """ + if not args: + tab = self.core.tabs.current_tab + RosterInfoTab = tabs.RosterInfoTab + if not isinstance(tab, RosterInfoTab): + return self.core.information('No JID specified', 'Error') + else: + item = tab.selected_row + if isinstance(item, Contact): + jid = item.bare_jid + else: + return self.core.information('No subscription to accept', 'Warning') + else: + jid = safeJID(args[0]).bare + nodepart = safeJID(jid).user + jid = safeJID(jid) + # crappy transports putting resources inside the node part + if '\\2f' in nodepart: + jid.user = nodepart.split('\\2f')[0] + contact = roster[jid] + if contact is None: + return self.core.information('No subscription to accept', 'Warning') + contact.pending_in = False + roster.modified() + self.core.xmpp.send_presence(pto=jid, ptype='subscribed') + self.core.xmpp.client_roster.send_last_presence() + if contact.subscription in ('from', + 'none') and not contact.pending_out: + self.core.xmpp.send_presence( + pto=jid, ptype='subscribe', pnick=self.core.own_nick) + self.core.information('%s is now authorized' % jid, 'Roster') + @command_args_parser.quoted(1) def command_add(self, args): """ @@ -516,17 +554,17 @@ class CommandCore: accept the reverse subscription """ if args is None: - jid = self.core.tabs.current_tab.name - if jid is 'Roster' or 'muc' in jid: - self.core.information('No JID specified', 'Error') - return - else: + tab = self.core.tabs.current_tab + ConversationTab = tabs.ConversationTab + if isinstance(tab, ConversationTab): + jid = tab.general_jid if jid in roster and roster[jid].subscription in ('to', 'both'): return self.core.information('Already subscribed.', 'Roster') roster.add(jid) roster.modified() - self.core.information('%s was added to the roster' % jid, 'Roster') - return + return self.core.information('%s was added to the roster' % jid, 'Roster') + else: + return self.core.information('No JID specified', 'Error') jid = safeJID(safeJID(args[0]).bare) if not str(jid): self.core.information( |