Philipp Hörist pushed to branch gajim_1.1 at gajim / gajim
Commits: 5af79671 by Philipp Hörist at 2018-12-09T20:24:43Z Find correct contact on private message
get_contact() returns also a contact if only the bare jid matches, which for private messages is the groupchat contact object.
- - - - - 2a8d5739 by Philipp Hörist at 2018-12-09T20:24:56Z MUC: Identify subject change correctly
Fixes #9491
- - - - -
5 changed files:
- gajim/common/connection_handlers_events.py - gajim/common/modules/message.py - gajim/groupchat_control.py - gajim/roster_window.py - gajim/session.py
Changes:
===================================== gajim/common/connection_handlers_events.py ===================================== @@ -432,15 +432,6 @@ class GcMessageReceivedEvent(nec.NetworkIncomingEvent): # message from server self.nick = ''
- self.subject = self.stanza.getSubject() - - if self.subject is not None: - app.nec.push_incoming_event( - nec.NetworkEvent('gc-subject-received', - nickname=self.msg_obj.resource, - **vars(self.msg_obj))) - return - conditions = self.stanza.getStatusConditions() if conditions: self.status_code = []
===================================== gajim/common/modules/message.py ===================================== @@ -227,7 +227,10 @@ class Message:
subject = event.stanza.getSubject() groupchat = event.mtype == 'groupchat' - muc_subject = subject and groupchat + + # XEP-0045: only a message that contains a <subject/> but no <body/> + # element shall be considered a subject change for MUC purposes. + muc_subject = subject and groupchat and not event.msgtxt
# Determine timestamps if groupchat: @@ -284,6 +287,11 @@ class Message: event.session, event.fjid, timestamp) return
+ if muc_subject: + app.nec.push_incoming_event(NetworkEvent('gc-subject-received', + **vars(event))) + return + if groupchat: app.nec.push_incoming_event(GcMessageReceivedEvent( None,
===================================== gajim/groupchat_control.py ===================================== @@ -1535,7 +1535,7 @@ class GroupchatControl(ChatControlBase): self.draw_banner_text()
def _nec_gc_subject_received(self, event): - if event.conn.name != self.account: + if event.account != self.account: return if event.jid != self.room_jid: return @@ -1544,7 +1544,7 @@ class GroupchatControl(ChatControlBase): return self.set_subject(event.subject) text = _('%(nick)s has set the subject to %(subject)s') % { - 'nick': event.nickname, 'subject': event.subject} + 'nick': event.resource, 'subject': event.subject}
if event.delayed: date = time.strftime('%d-%m-%Y %H:%M:%S',
===================================== gajim/roster_window.py ===================================== @@ -2700,10 +2700,10 @@ class RosterWindow:
def _nec_gc_subject_received(self, obj): contact = app.contacts.get_contact_with_highest_priority( - obj.conn.name, obj.jid) + obj.account, obj.jid) if contact: contact.status = obj.subject - self.draw_contact(obj.jid, obj.conn.name) + self.draw_contact(obj.jid, obj.account)
def _nec_metacontacts_received(self, obj): self.redraw_metacontacts(obj.conn.name)
===================================== gajim/session.py ===================================== @@ -79,11 +79,13 @@ class ChatControlSession: """ if obj.session != self: return - contact = app.contacts.get_contact(self.conn.name, obj.jid, - obj.resource) - if not contact: - contact = app.contacts.get_gc_contact(self.conn.name, obj.jid, - obj.resource) + + if obj.muc_pm: + contact = app.contacts.get_gc_contact( + self.conn.name, obj.jid, obj.resource) + else: + contact = app.contacts.get_contact( + self.conn.name, obj.jid, obj.resource) if self.resource != obj.resource: self.resource = obj.resource if self.control:
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/1c09b50791eecd26c706a53d877912e1d3...