diff options
author | Maxime Buquet <pep@bouah.net> | 2019-11-21 03:01:37 +0100 |
---|---|---|
committer | Maxime Buquet <pep@bouah.net> | 2019-11-21 03:01:37 +0100 |
commit | 4d7a19da81d0bb7e8f4e342a5ea39b9a00b26369 (patch) | |
tree | 472db41751f82e264e3227821a10e11c4d3b970a | |
parent | d65ad614b3b067b673f5782b454d779a2da829e7 (diff) | |
parent | f157a46bd64484a9cc98456aba71d1981f715b18 (diff) | |
download | poezio-4d7a19da81d0bb7e8f4e342a5ea39b9a00b26369.tar.gz poezio-4d7a19da81d0bb7e8f4e342a5ea39b9a00b26369.tar.bz2 poezio-4d7a19da81d0bb7e8f4e342a5ea39b9a00b26369.tar.xz poezio-4d7a19da81d0bb7e8f4e342a5ea39b9a00b26369.zip |
Merge branch 'safejid-foo' into 'master'
Safejid foo
See merge request poezio/poezio!50
-rw-r--r-- | poezio/core/commands.py | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/poezio/core/commands.py b/poezio/core/commands.py index 08e49898..33bd3ecf 100644 --- a/poezio/core/commands.py +++ b/poezio/core/commands.py @@ -2,13 +2,10 @@ Global commands which are to be linked to the Core class """ -import logging - -log = logging.getLogger(__name__) - import asyncio from xml.etree import cElementTree as ET from typing import List, Optional, Tuple +import logging from slixmpp import JID, InvalidJID from slixmpp.exceptions import XMPPError @@ -25,15 +22,16 @@ 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 from poezio.decorators import command_args_parser - from poezio.core.structs import Command, POSSIBLE_SHOW +log = logging.getLogger(__name__) + + class CommandCore: def __init__(self, core): self.core = core @@ -940,19 +938,25 @@ class CommandCore: "disconnected", self.core.exit, disposable=True) @command_args_parser.quoted(0, 1, ['']) - def destroy_room(self, args): + def destroy_room(self, args: List[str]) -> None: """ /destroy_room [JID] """ - room = safeJID(args[0]).bare - if room: - muc.destroy_room(self.core.xmpp, room) - elif isinstance(self.core.tabs.current_tab, - tabs.MucTab) and not args[0]: + if not args[0] and isinstance(self.core.tabs.current_tab, tabs.MucTab): muc.destroy_room(self.core.xmpp, self.core.tabs.current_tab.general_jid) - else: - self.core.information('Invalid JID: "%s"' % args[0], 'Error') + return None + + try: + room = JID(args[0]).bare + if room: + muc.destroy_room(self.core.xmpp, room) + return None + except InvalidJID: + pass + + self.core.information('Invalid JID: "%s"' % args[0], 'Error') + return None @command_args_parser.quoted(1, 1, ['']) def bind(self, args): |