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/1c09b50791eecd26c706a53d877912e1d39d0c52...2a8d5739d37ec2fe823fcfe62489cc50ed421931
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/compare/1c09b50791eecd26c706a53d877912e1d39d0c52...2a8d5739d37ec2fe823fcfe62489cc50ed421931
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits