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:
parent
60c8f2fc3d
commit
82a12186ea
1 changed files with 38 additions and 17 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue