plugin XEP-0045: overriden availableReceived method of MUCClient to work around a bug in Wokkel (affiliation and role are not set). TODO: propose a patch upstream

This commit is contained in:
Goffi 2016-03-07 15:48:11 +01:00
commit ed2219df8f

View file

@ -692,6 +692,34 @@ class SatMUCClient (muc.MUCClient):
def subject(self, room, subject):
return muc.MUCClientProtocol.subject(self, room, subject)
def availableReceived(self, presence):
"""
Available presence was received.
"""
# XXX: we override MUCClient.availableReceived to fix bugs
# (affiliation and role are not set)
# FIXME: propose a patch upstream
room, user = self._getRoomUser(presence)
if room is None:
return
if user is None:
nick = presence.sender.resource
user = muc.User(nick, presence.entity)
# Update user data
user.role = presence.role
user.affiliation = presence.affiliation
user.status = presence.status
user.show = presence.show
if room.inRoster(user):
self.userUpdatedStatus(room, user, presence.show, presence.status)
else:
room.addUser(user)
self.userJoinedRoom(room, user)
def unavailableReceived(self, presence):
# XXX: we override this method to manage nickname change
# TODO: feed this back to Wokkel