Daniel Brötzmann pushed to branch master at gajim / gajim
Commits: 45e1f810 by wurstsalat at 2022-11-01T20:39:00+01:00 fix: Message selection: Don’t fail hard if log_line_id is None
Fixes #11263
- - - - - 8c244751 by wurstsalat at 2022-11-01T20:48:39+01:00 imprv: Add msg_log_id to live message events
Improves the situation for #11263
- - - - -
5 changed files:
- gajim/common/client.py - gajim/common/events.py - gajim/common/modules/message.py - gajim/gtk/control.py - gajim/gtk/conversation/rows/widgets.py
Changes:
===================================== gajim/common/client.py ===================================== @@ -494,8 +494,9 @@ def _send_message(self, message: OutgoingMessage) -> None: message.set_sent_timestamp() message.message_id = self.send_stanza(message.stanza)
+ log_line_id = None if not message.is_groupchat: - self.get_module('Message').log_message(message) + log_line_id = self.get_module('Message').log_message(message)
app.ged.raise_event( MessageSent(jid=message.jid, @@ -507,6 +508,7 @@ def _send_message(self, message: OutgoingMessage) -> None: label=message.label, correct_id=message.correct_id, message_id=message.message_id, + msg_log_id=log_line_id, play_sound=message.play_sound))
def _prepare_for_connect(self) -> None:
===================================== gajim/common/events.py ===================================== @@ -162,6 +162,7 @@ class MessageSent(ApplicationEvent): jid: JID message: str message_id: str + msg_log_id: Optional[int] chatstate: Optional[str] timestamp: float additional_data: AdditionalDataDict @@ -394,7 +395,7 @@ class MessageReceived(ApplicationEvent): fjid: str resource: str delayed: Optional[float] - msg_log_id: int + msg_log_id: Optional[int] displaymarking: Optional[Displaymarking]
===================================== gajim/common/modules/message.py ===================================== @@ -197,18 +197,21 @@ def _message_received(self, event_attr.update({ 'room_jid': jid, }) + event = GcMessageReceived(**event_attr) - app.ged.raise_event(event) + # TODO: Some plugins modify msgtxt in the GUI event - self._log_muc_message(event) + msg_log_id = self._log_muc_message(event) + event.msg_log_id = msg_log_id + app.ged.raise_event(event) return
- app.ged.raise_event(MessageReceived(**event_attr)) - + event = MessageReceived(**event_attr) if not msgtxt: + app.ged.raise_event(event) return
- app.storage.archive.insert_into_logs( + msg_log_id = app.storage.archive.insert_into_logs( self._account, fjid if properties.is_muc_pm else jid, properties.timestamp, @@ -219,6 +222,9 @@ def _message_received(self, stanza_id=stanza_id or message_id, message_id=properties.id)
+ event.msg_log_id = msg_log_id + app.ged.raise_event(event) + def _message_error_received(self, _con: types.xmppClient, _stanza: nbxmpp.Message, @@ -243,11 +249,11 @@ def _message_error_received(self, message_id=properties.id, error=properties.error))
- def _log_muc_message(self, event: GcMessageReceived) -> None: + def _log_muc_message(self, event: GcMessageReceived) -> Optional[int]: self._check_for_mam_compliance(event.room_jid, event.stanza_id)
if event.msgtxt and event.properties.muc_nickname: - app.storage.archive.insert_into_logs( + msg_log_id = app.storage.archive.insert_into_logs( self._account, event.jid, event.properties.timestamp, @@ -257,6 +263,9 @@ def _log_muc_message(self, event: GcMessageReceived) -> None: additional_data=event.additional_data, stanza_id=event.stanza_id, message_id=event.properties.id) + return msg_log_id + + return None
def _check_for_mam_compliance(self, room_jid: str, stanza_id: str) -> None: disco_info = app.storage.cache.get_last_disco_info(room_jid) @@ -368,7 +377,7 @@ def build_message_stanza(self, message: OutgoingMessage) -> nbxmpp.Message:
return stanza
- def log_message(self, message: OutgoingMessage) -> None: + def log_message(self, message: OutgoingMessage) -> Optional[int]: if not message.is_loggable: return
@@ -384,9 +393,9 @@ def log_message(self, message: OutgoingMessage) -> None: message.correct_id, KindConstant.CHAT_MSG_SENT, message.timestamp) - return + return None
- app.storage.archive.insert_into_logs( + msg_log_id = app.storage.archive.insert_into_logs( self._account, message.jid, message.timestamp, @@ -396,3 +405,4 @@ def log_message(self, message: OutgoingMessage) -> None: additional_data=message.additional_data, message_id=message.message_id, stanza_id=message.message_id) + return msg_log_id
===================================== gajim/gtk/control.py ===================================== @@ -286,6 +286,7 @@ def _on_message_sent(self, event: events.MessageSent) -> None: tim=event.timestamp, displaymarking=displaymarking, message_id=message_id, + msg_log_id=event.msg_log_id, additional_data=event.additional_data)
def _on_message_received(self, event: events.MessageReceived) -> None: @@ -367,6 +368,7 @@ def _on_gc_message_received(self, event: events.GcMessageReceived) -> None: displaymarking=event.displaymarking, message_id=event.properties.id, stanza_id=event.stanza_id, + msg_log_id=event.msg_log_id, additional_data=event.additional_data)
def _on_message_updated(self, event: events.MessageUpdated) -> None: @@ -1156,6 +1158,7 @@ def add_muc_message(self, displaymarking: Optional[Displaymarking] = None, message_id: Optional[str] = None, stanza_id: Optional[str] = None, + msg_log_id: Optional[int] = None, additional_data: Optional[AdditionalDataDict] = None, ) -> None:
@@ -1174,6 +1177,7 @@ def add_muc_message(self, displaymarking=displaymarking, message_id=message_id, stanza_id=stanza_id, + msg_log_id=msg_log_id, additional_data=additional_data)
def _on_room_subject(self,
===================================== gajim/gtk/conversation/rows/widgets.py ===================================== @@ -176,7 +176,7 @@ def _create_popover(self, def _on_activate_message_selection(self, _button: Gtk.ModelButton) -> None: app.window.activate_action( 'activate-message-selection', - GLib.Variant('u', self._row.log_line_id)) + GLib.Variant('u', self._row.log_line_id or 0))
@staticmethod def _on_closed(popover: Gtk.Popover) -> None:
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/e426ed6c311815f82741cd3a59f8b61f...