diff --git a/poezio/fixes.py b/poezio/fixes.py index a9e15dee..8e6c7921 100644 --- a/poezio/fixes.py +++ b/poezio/fixes.py @@ -26,23 +26,6 @@ def has_identity(xmpp, jid, identity, on_true=None, on_false=None): xmpp.plugin['xep_0030'].get_info(jid=jid, callback=_cb) -def get_room_form(xmpp: ClientXMPP, room: str, callback: Callable[[Iq], Any]): - def _cb(result): - if result["type"] == "error": - return callback(None) - xform = result.xml.find( - '{http://jabber.org/protocol/muc#owner}query/{jabber:x:data}x') - if xform is None: - return callback(None) - form = xmpp.plugin['xep_0004'].build_form(xform) - return callback(form) - - iq = xmpp.make_iq_get(ito=room) - query = ET.Element('{http://jabber.org/protocol/muc#owner}query') - iq.append(query) - iq.send(callback=_cb) - - def _filter_add_receipt_request(self, stanza): """ Auto add receipt requests to outgoing messages, if: diff --git a/poezio/tabs/muctab.py b/poezio/tabs/muctab.py index 69256cfe..008a72c0 100644 --- a/poezio/tabs/muctab.py +++ b/poezio/tabs/muctab.py @@ -1404,19 +1404,19 @@ class MucTab(ChatTab): self.core.information("Unknown user: %s" % nick, "Error") @command_args_parser.quoted(0) - def command_configure(self, ignored: Any) -> None: + async def command_configure(self, ignored: Any) -> None: """ /configure """ - def on_form_received(form: Form) -> None: - if not form: - self.core.information( - 'Could not retrieve the configuration form', 'Error') - return + try: + form = await self.core.xmpp.plugin['xep_0045'].get_room_config( + self.jid.bare + ) self.core.open_new_form(form, self.cancel_config, self.send_config) - - fixes.get_room_form(self.core.xmpp, self.jid.bare, on_form_received) + except (IqError, IqTimeout, ValueError): + self.core.information( + 'Could not retrieve the configuration form', 'Error') @command_args_parser.raw def command_cycle(self, msg: str) -> None: