Philipp Hörist pushed to branch chat_markers at gajim / gajim
Commits: 263c5f2c by Philipp Hörist at 2019-10-02T20:47:45Z Fix some errors
- - - - -
3 changed files:
- gajim/chat_control_base.py - gajim/common/modules/chat_markers.py - gajim/gui_interface.py
Changes:
===================================== gajim/chat_control_base.py ===================================== @@ -1071,7 +1071,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools): event_type.type_, self.contact.jid)
event = event_type(text, subject, self, msg_log_id, - msg_id=message_id, + message_id=message_id, show_in_roster=show_in_roster, show_in_systray=show_in_systray) app.events.add_event(self.account, full_jid, event)
===================================== gajim/common/modules/chat_markers.py ===================================== @@ -36,21 +36,29 @@ class ChatMarkers(BaseModule): priority=48), ]
- def _process_message_marker(self, _con, stanza, properties): + def _process_message_marker(self, _con, _stanza, properties): if not properties.is_displayed_marker: return
if properties.type.is_error: return
- self._log.info('Displayed: %s, id: %s', - properties.jid, properties.marker.id) + if (not properties.type.is_groupchat and + properties.carbon_type != 'sent'): + # Only act on displayed marker received by own devices for now + return + + self._log.info('%s: %s %s', + properties.jid, + properties.marker.type, + properties.marker.id)
app.nec.push_outgoing_event( NetworkEvent('displayed-marker-received', account=self._account, jid=properties.jid, type=properties.type, + is_muc_pm=properties.is_muc_pm, marker_id=properties.marker.id))
def send_marker(self, jid, marker, id_, is_gc):
===================================== gajim/gui_interface.py ===================================== @@ -287,40 +287,46 @@ class Interface:
def handle_event_chat_marker_received(self, event): if event.type.is_groupchat: - types = ['printed_gc_msg', 'printed_marked_gc_msg'] - control = app.interface.msg_win_mgr.get_control(event.jid, - event.account) - if not control: - if event.jid in app.interface.minimized_controls[event.account]: - control = app.interface.minimized_controls[event.account][event.jid] - if not control: + control = self.get_groupchat_control(event.account, event.jid) + if control is None: + log.warning('Groupchat control not found') + return + + con = app.connections[event.account] + manager = con.get_module('MUC').get_manager() + + muc_data = manager.get(event.jid.getBare()) + if muc_data is None: + log.warning('Unknown MUC') return - if obj.resource != control.nick: + + if event.jid.getResource() != muc_data.nick: return - event_jid = event.jid
- else: + jid = event.jid.getBare() + types = ['printed_gc_msg', 'printed_marked_gc_msg']
+ else: types = ['chat', 'pm', 'printed_chat', 'printed_pm'] - if event.properties.carbon_type != 'sent': - return + jid = event.jid.getBare() + if event.is_muc_pm: + jid = event.jid
- control = app.interface.msg_win_mgr.get_control(event.jid, - event.account) - if not control: - control = app.interface.msg_win_mgr.get_gc_control( - event.jid, event.account) - event_jid = event.jid + control = app.interface.msg_win_mgr.get_control(jid, event.account)
# Compare with control.last_msg_id. - events_ = app.events.get_events(event.account, event_jid, types) + breakpoint() + events_ = app.events.get_events(event.account, jid, types) if not events_: + log.warning('No Events') return - if events_[-1].msg_id != event.marker_id: + + if events_[-1].message_id != event.marker_id: return - if not app.events.remove_events(event.account, event_jid, types=types): + + if not app.events.remove_events(event.account, jid, types=types): # There were events to remove - if control: + if control is None: control.redraw_after_event_removed(event.jid)
def handle_event_msgerror(self, obj): @@ -1488,6 +1494,12 @@ class Interface: ### Methods for opening new messages controls ################################################################################
+ def get_groupchat_control(self, account, room_jid): + control = self.minimized_controls[account].get(room_jid) + if control is None: + control = self.msg_win_mgr.get_gc_control(room_jid, account) + return control + def show_groupchat(self, account, room_jid): minimized_control = self.minimized_controls[account].get(room_jid) if minimized_control is not None:
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/263c5f2cc46d593b7263badf1789439d850...