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:
parent
a99d593a35
commit
ed2219df8f
1 changed files with 28 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue