summaryrefslogtreecommitdiff
path: root/poezio/tabs/muctab.py
diff options
context:
space:
mode:
authorEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2020-12-27 02:23:16 +0100
committerLink Mauve <linkmauve@linkmauve.fr>2020-12-28 19:10:53 +0100
commit4b0e481902084970e89eafd23acd535b0e6187bc (patch)
tree3b618c894bd5659917516df099d1580ee21d86dd /poezio/tabs/muctab.py
parent0474d0f4b2d36bd188bd08b6ee5a378792de9f15 (diff)
downloadpoezio-4b0e481902084970e89eafd23acd535b0e6187bc.tar.gz
poezio-4b0e481902084970e89eafd23acd535b0e6187bc.tar.bz2
poezio-4b0e481902084970e89eafd23acd535b0e6187bc.tar.xz
poezio-4b0e481902084970e89eafd23acd535b0e6187bc.zip
Rework set_affiliation() to use slixmpp.
Also remove two safeJID().
Diffstat (limited to 'poezio/tabs/muctab.py')
-rw-r--r--poezio/tabs/muctab.py38
1 files changed, 18 insertions, 20 deletions
diff --git a/poezio/tabs/muctab.py b/poezio/tabs/muctab.py
index 88fb5419..31b6d845 100644
--- a/poezio/tabs/muctab.py
+++ b/poezio/tabs/muctab.py
@@ -241,12 +241,6 @@ class MucTab(ChatTab):
Change the affiliation of a nick or JID
"""
- def callback(iq: Iq) -> None:
- if iq['type'] == 'error':
- self.core.information(
- "Could not set affiliation '%s' for '%s'." %
- (affiliation, nick_or_jid), "Warning")
-
if not self.joined:
return
@@ -257,21 +251,25 @@ class MucTab(ChatTab):
', '.join(valid_affiliations), 'Error')
return
if nick_or_jid in [user.nick for user in self.users]:
- muc.set_user_affiliation(
- self.core.xmpp,
- self.jid.bare,
- affiliation,
- nick=nick_or_jid,
- callback=callback,
- reason=reason)
+ nick = nick_or_jid
+ jid = None
else:
- muc.set_user_affiliation(
- self.core.xmpp,
- self.jid.bare,
- affiliation,
- jid=safeJID(nick_or_jid),
- callback=callback,
- reason=reason)
+ nick = None
+ try:
+ jid = JID(nick_or_jid)
+ except InvalidJID:
+ self.core.information('Invalid JID or missing occupant: %s' % nick_or_jid, 'Error')
+ return
+
+ async def do_set_affiliation(room: JID, jid: Optional[JID], nick: Optional[str], affiliation: str, reason: str):
+ try:
+ await self.core.xmpp['xep_0045'].set_affiliation(room, jid, nick, affiliation=affiliation, reason=reason)
+ except (IqError, IqTimeout) as e:
+ self.core.information(
+ "Could not set affiliation '%s' for '%s': %s" %
+ (affiliation, nick_or_jid, e), "Warning")
+
+ asyncio.ensure_future(do_set_affiliation(self.jid.bare, jid, nick, affiliation, reason))
def change_role(self, nick: str, role: str, reason: str = '') -> None:
"""