From b5cca8687d16afafbbfcbd7f74a3c8aa8ca35108 Mon Sep 17 00:00:00 2001 From: Madhur Garg Date: Sun, 24 Mar 2019 19:35:43 +0530 Subject: Corrects the functionality of /add command in all tabs. Fixes #3395 --- poezio/core/commands.py | 29 +++++++++++++++++++++++++++++ poezio/core/core.py | 8 ++++++++ 2 files changed, 37 insertions(+) (limited to 'poezio/core') diff --git a/poezio/core/commands.py b/poezio/core/commands.py index 4dbb5611..6cf398ff 100644 --- a/poezio/core/commands.py +++ b/poezio/core/commands.py @@ -508,6 +508,35 @@ class CommandCore: self.core.bookmarks.save(self.core.xmpp, callback=cb) else: self.core.information('No bookmark to remove', 'Info') + + @command_args_parser.quoted(1) + def command_add(self, args): + """ + Add the specified JID to the roster, and automatically + 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: + 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 + jid = safeJID(safeJID(args[0]).bare) + if not str(jid): + self.core.information( + 'The provided JID (%s) is not valid' % (args[0], ), 'Error') + return + 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') @command_args_parser.ignored def command_reconnect(self): diff --git a/poezio/core/core.py b/poezio/core/core.py index 6bb19d16..51c304fa 100644 --- a/poezio/core/core.py +++ b/poezio/core/core.py @@ -1758,6 +1758,14 @@ class Core: "currently using in this room (instead of default_nick).", shortdesc="Bookmark a room online.", completion=self.completion.bookmark) + self.register_command( + 'add', + self.command.command_add, + usage='', + desc='Add the specified JID to your roster, ask them to' + ' allow you to see his presence, and allow them to' + ' see your presence.', + shortdesc='Add a user to your roster.') self.register_command( 'reconnect', self.command.command_reconnect, -- cgit v1.2.3