From ee0caff6ca13f299fe72404711eae2017a708de9 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Sun, 24 May 2020 15:25:59 +0200 Subject: [PATCH] Add a /leave command This is the other side of /join when bookmark_on_join is set to true. It lets the user easily leave a bookmarked MUC from all of their clients at once. --- doc/source/commands.rst | 18 ++++++++++++++++++ poezio/tabs/muctab.py | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/doc/source/commands.rst b/doc/source/commands.rst index 5ea69abd..4b277e4a 100644 --- a/doc/source/commands.rst +++ b/doc/source/commands.rst @@ -426,6 +426,24 @@ MultiUserChat tab commands Disconnect you from a room. You can specify an optional message. + This is similar to :term:`/leave`, but keeps the tab open and doesn’t + remove the bookmark, so restarting poezio or another client will reopen + this room. + + /leave + **Usage:** ``/leave [message]`` + + Disconnect you from a room, on all of your clients. You can specify an + optional message. + + This is similar to :term:`/part`, but closes the tab and removes its + bookmark, to make sure we don’t come back to this room the next time we + open poezio or another client. + + This is similar to :term:`/close`, but also removes the bookmark to + make sure we don’t come back to this room the next time we open poezio + or another client. + /nick **Usage:** ``/nick `` diff --git a/poezio/tabs/muctab.py b/poezio/tabs/muctab.py index 751509a7..b37b725e 100644 --- a/poezio/tabs/muctab.py +++ b/poezio/tabs/muctab.py @@ -1483,6 +1483,17 @@ class MucTab(ChatTab): self.refresh() self.core.doupdate() + @command_args_parser.raw + def command_leave(self, msg): + """ + /leave [msg] + """ + self.leave_room(msg) + if config.get('bookmark_on_join'): + self.core.bookmarks.remove(self.jid) + self.core.bookmarks.save(self.core.xmpp) + self.core.close_tab(self) + @command_args_parser.raw def command_close(self, msg): """ @@ -2073,6 +2084,13 @@ class MucTab(ChatTab): ' specify an optional message.'), 'shortdesc': 'Leave the room.' + }, { + 'name': 'leave', + 'func': self.command_leave, + 'usage': '[message]', + 'desc': ('Disconnect from a room, on all of your clients. ' + 'You can specify an optional message'), + 'shortdesc': 'Leave the room.' }, { 'name': 'close',