diff src/plugins/plugin_xep_0249.py @ 1970:200cd707a46d

plugin XEP-0045, quick_frontend + primitivus (chat): cleaning of XEP-0045 (first pass): - bridge methods/signals now all start with "muc" to follow new convention - internal method use client instead of profile to follow new convention - removed excetpions from plugin XEP-0045 in favor of core.exceptions, NotReady added - cleaned/simplified several part of the code. checkClient removed as it is not needed anymore - self.clients map removed, muc data are now stored directly in client - getRoomEntityNick and getRoomNicksOfUsers are removed as they don't look sane. /!\ This break all room game plugins for the moment - use of uuid4 instead of uuid1 for getUniqueName, as host ID and current time are used for uuid1
author Goffi <goffi@goffi.org>
date Mon, 27 Jun 2016 21:45:11 +0200
parents a2bc5089c2eb
children a5eb6f6b8db2
line wrap: on
line diff
--- a/src/plugins/plugin_xep_0249.py	Fri Jun 24 22:41:28 2016 +0200
+++ b/src/plugins/plugin_xep_0249.py	Mon Jun 27 21:45:11 2016 +0200
@@ -19,6 +19,7 @@
 
 from sat.core.i18n import _
 from sat.core.constants import Const as C
+from sat.core import exceptions
 from sat.core.log import getLogger
 log = getLogger(__name__)
 from twisted.words.xish import domish
@@ -136,6 +137,7 @@
         @param message: message element
         @profile: %(doc_profile)s
         """
+        client = self.host.getClient(profile)
         try:
             room_jid_s = message.firstChildElement()['jid']
             log.info(_(u'Invitation received for room %(room)s [%(profile)s]') % {'room': room_jid_s, 'profile': profile})
@@ -144,9 +146,14 @@
             return
         from_jid_s = message["from"]
         room_jid = jid.JID(room_jid_s)
-        if room_jid in self.host.plugins["XEP-0045"].clients[profile].joined_rooms:
-            log.info(_("Invitation silently discarded because user is already in the room."))
+        try:
+            self.host.plugins["XEP-0045"].checkRoomJoined(client, room_jid)
+        except exceptions.NotFound:
+            pass
+        else:
+            log.info(_(u"Invitation silently discarded because user is already in the room."))
             return
+
         autojoin = self.host.memory.getParamA(AUTOJOIN_NAME, AUTOJOIN_KEY, profile_key=profile)
 
         def accept_cb(conf_id, accepted, data, profile):