quick frontend, primitivus (chat, contact_list): fixed MUC private messages handling:

- occupants can be clicked again
    - QuickChat.Occupant now keep room jid and real jid if available
    - history messages are filtered correctly when requesting history for MUC room or private conversation
This commit is contained in:
Goffi 2016-07-24 18:07:45 +02:00
commit 82a12186ea

View file

@ -120,14 +120,22 @@ class Occupant(object):
self.parent = parent
self.profile = profile
self.nick = data['nick']
self.entity = data.get('entity')
if not self.entity:
self.entity = jid.JID(u"{}/{}".format(parent.target.bare, self.nick)),
self._entity = data.get('entity')
self.affiliation = data['affiliation']
self.role = data['role']
self.widgets = set() # widgets linked to this occupant
self._state = None
@property
def jid(self):
"""jid in the room"""
return jid.JID(u"{}/{}".format(self.parent.target.bare, self.nick))
@property
def real_jid(self):
"""real jid if known else None"""
return self._entity
@property
def host(self):
return self.parent.host
@ -321,7 +329,22 @@ class QuickChat(quick_widgets.QuickWidget):
log_msg += _(u" ({} messages)".format(size))
log.debug(log_msg)
target = self.target.bare
if self.type == C.CHAT_ONE2ONE:
special = self.host.contact_lists[self.profile].getCache(self.target, C.CONTACT_SPECIAL)
if special == C.CONTACT_SPECIAL_GROUP:
# we have a private conversation
# so we need full jid for the history
# (else we would get history from group itself)
# and to filter out groupchat message
target = self.target
filters['not_types'] = C.MESS_TYPE_GROUPCHAT
else:
target = self.target.bare
else:
# groupchat
target = self.target.bare
# FIXME: info not handled correctly
filters['types'] = C.MESS_TYPE_GROUPCHAT
def _historyGetCb(history):
# day_format = "%A, %d %b %Y" # to display the day change