Daniel Brötzmann pushed to branch master at gajim / gajim
Commits:
-
45e1f810
by wurstsalat at 2022-11-01T20:39:00+01:00
-
8c244751
by wurstsalat at 2022-11-01T20:48:39+01:00
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:
| ... | ... | @@ -494,8 +494,9 @@ def _send_message(self, message: OutgoingMessage) -> None: |
| 494 | 494 | message.set_sent_timestamp()
|
| 495 | 495 | message.message_id = self.send_stanza(message.stanza)
|
| 496 | 496 | |
| 497 | + log_line_id = None
|
|
| 497 | 498 | if not message.is_groupchat:
|
| 498 | - self.get_module('Message').log_message(message)
|
|
| 499 | + log_line_id = self.get_module('Message').log_message(message)
|
|
| 499 | 500 | |
| 500 | 501 | app.ged.raise_event(
|
| 501 | 502 | MessageSent(jid=message.jid,
|
| ... | ... | @@ -507,6 +508,7 @@ def _send_message(self, message: OutgoingMessage) -> None: |
| 507 | 508 | label=message.label,
|
| 508 | 509 | correct_id=message.correct_id,
|
| 509 | 510 | message_id=message.message_id,
|
| 511 | + msg_log_id=log_line_id,
|
|
| 510 | 512 | play_sound=message.play_sound))
|
| 511 | 513 | |
| 512 | 514 | def _prepare_for_connect(self) -> None:
|
| ... | ... | @@ -162,6 +162,7 @@ class MessageSent(ApplicationEvent): |
| 162 | 162 | jid: JID
|
| 163 | 163 | message: str
|
| 164 | 164 | message_id: str
|
| 165 | + msg_log_id: Optional[int]
|
|
| 165 | 166 | chatstate: Optional[str]
|
| 166 | 167 | timestamp: float
|
| 167 | 168 | additional_data: AdditionalDataDict
|
| ... | ... | @@ -394,7 +395,7 @@ class MessageReceived(ApplicationEvent): |
| 394 | 395 | fjid: str
|
| 395 | 396 | resource: str
|
| 396 | 397 | delayed: Optional[float]
|
| 397 | - msg_log_id: int
|
|
| 398 | + msg_log_id: Optional[int]
|
|
| 398 | 399 | displaymarking: Optional[Displaymarking]
|
| 399 | 400 | |
| 400 | 401 |
| ... | ... | @@ -197,18 +197,21 @@ def _message_received(self, |
| 197 | 197 | event_attr.update({
|
| 198 | 198 | 'room_jid': jid,
|
| 199 | 199 | })
|
| 200 | + |
|
| 200 | 201 | event = GcMessageReceived(**event_attr)
|
| 201 | - app.ged.raise_event(event)
|
|
| 202 | + |
|
| 202 | 203 | # TODO: Some plugins modify msgtxt in the GUI event
|
| 203 | - self._log_muc_message(event)
|
|
| 204 | + msg_log_id = self._log_muc_message(event)
|
|
| 205 | + event.msg_log_id = msg_log_id
|
|
| 206 | + app.ged.raise_event(event)
|
|
| 204 | 207 | return
|
| 205 | 208 | |
| 206 | - app.ged.raise_event(MessageReceived(**event_attr))
|
|
| 207 | - |
|
| 209 | + event = MessageReceived(**event_attr)
|
|
| 208 | 210 | if not msgtxt:
|
| 211 | + app.ged.raise_event(event)
|
|
| 209 | 212 | return
|
| 210 | 213 | |
| 211 | - app.storage.archive.insert_into_logs(
|
|
| 214 | + msg_log_id = app.storage.archive.insert_into_logs(
|
|
| 212 | 215 | self._account,
|
| 213 | 216 | fjid if properties.is_muc_pm else jid,
|
| 214 | 217 | properties.timestamp,
|
| ... | ... | @@ -219,6 +222,9 @@ def _message_received(self, |
| 219 | 222 | stanza_id=stanza_id or message_id,
|
| 220 | 223 | message_id=properties.id)
|
| 221 | 224 | |
| 225 | + event.msg_log_id = msg_log_id
|
|
| 226 | + app.ged.raise_event(event)
|
|
| 227 | + |
|
| 222 | 228 | def _message_error_received(self,
|
| 223 | 229 | _con: types.xmppClient,
|
| 224 | 230 | _stanza: nbxmpp.Message,
|
| ... | ... | @@ -243,11 +249,11 @@ def _message_error_received(self, |
| 243 | 249 | message_id=properties.id,
|
| 244 | 250 | error=properties.error))
|
| 245 | 251 | |
| 246 | - def _log_muc_message(self, event: GcMessageReceived) -> None:
|
|
| 252 | + def _log_muc_message(self, event: GcMessageReceived) -> Optional[int]:
|
|
| 247 | 253 | self._check_for_mam_compliance(event.room_jid, event.stanza_id)
|
| 248 | 254 | |
| 249 | 255 | if event.msgtxt and event.properties.muc_nickname:
|
| 250 | - app.storage.archive.insert_into_logs(
|
|
| 256 | + msg_log_id = app.storage.archive.insert_into_logs(
|
|
| 251 | 257 | self._account,
|
| 252 | 258 | event.jid,
|
| 253 | 259 | event.properties.timestamp,
|
| ... | ... | @@ -257,6 +263,9 @@ def _log_muc_message(self, event: GcMessageReceived) -> None: |
| 257 | 263 | additional_data=event.additional_data,
|
| 258 | 264 | stanza_id=event.stanza_id,
|
| 259 | 265 | message_id=event.properties.id)
|
| 266 | + return msg_log_id
|
|
| 267 | + |
|
| 268 | + return None
|
|
| 260 | 269 | |
| 261 | 270 | def _check_for_mam_compliance(self, room_jid: str, stanza_id: str) -> None:
|
| 262 | 271 | disco_info = app.storage.cache.get_last_disco_info(room_jid)
|
| ... | ... | @@ -368,7 +377,7 @@ def build_message_stanza(self, message: OutgoingMessage) -> nbxmpp.Message: |
| 368 | 377 | |
| 369 | 378 | return stanza
|
| 370 | 379 | |
| 371 | - def log_message(self, message: OutgoingMessage) -> None:
|
|
| 380 | + def log_message(self, message: OutgoingMessage) -> Optional[int]:
|
|
| 372 | 381 | if not message.is_loggable:
|
| 373 | 382 | return
|
| 374 | 383 | |
| ... | ... | @@ -384,9 +393,9 @@ def log_message(self, message: OutgoingMessage) -> None: |
| 384 | 393 | message.correct_id,
|
| 385 | 394 | KindConstant.CHAT_MSG_SENT,
|
| 386 | 395 | message.timestamp)
|
| 387 | - return
|
|
| 396 | + return None
|
|
| 388 | 397 | |
| 389 | - app.storage.archive.insert_into_logs(
|
|
| 398 | + msg_log_id = app.storage.archive.insert_into_logs(
|
|
| 390 | 399 | self._account,
|
| 391 | 400 | message.jid,
|
| 392 | 401 | message.timestamp,
|
| ... | ... | @@ -396,3 +405,4 @@ def log_message(self, message: OutgoingMessage) -> None: |
| 396 | 405 | additional_data=message.additional_data,
|
| 397 | 406 | message_id=message.message_id,
|
| 398 | 407 | stanza_id=message.message_id)
|
| 408 | + return msg_log_id |
| ... | ... | @@ -286,6 +286,7 @@ def _on_message_sent(self, event: events.MessageSent) -> None: |
| 286 | 286 | tim=event.timestamp,
|
| 287 | 287 | displaymarking=displaymarking,
|
| 288 | 288 | message_id=message_id,
|
| 289 | + msg_log_id=event.msg_log_id,
|
|
| 289 | 290 | additional_data=event.additional_data)
|
| 290 | 291 | |
| 291 | 292 | def _on_message_received(self, event: events.MessageReceived) -> None:
|
| ... | ... | @@ -367,6 +368,7 @@ def _on_gc_message_received(self, event: events.GcMessageReceived) -> None: |
| 367 | 368 | displaymarking=event.displaymarking,
|
| 368 | 369 | message_id=event.properties.id,
|
| 369 | 370 | stanza_id=event.stanza_id,
|
| 371 | + msg_log_id=event.msg_log_id,
|
|
| 370 | 372 | additional_data=event.additional_data)
|
| 371 | 373 | |
| 372 | 374 | def _on_message_updated(self, event: events.MessageUpdated) -> None:
|
| ... | ... | @@ -1156,6 +1158,7 @@ def add_muc_message(self, |
| 1156 | 1158 | displaymarking: Optional[Displaymarking] = None,
|
| 1157 | 1159 | message_id: Optional[str] = None,
|
| 1158 | 1160 | stanza_id: Optional[str] = None,
|
| 1161 | + msg_log_id: Optional[int] = None,
|
|
| 1159 | 1162 | additional_data: Optional[AdditionalDataDict] = None,
|
| 1160 | 1163 | ) -> None:
|
| 1161 | 1164 | |
| ... | ... | @@ -1174,6 +1177,7 @@ def add_muc_message(self, |
| 1174 | 1177 | displaymarking=displaymarking,
|
| 1175 | 1178 | message_id=message_id,
|
| 1176 | 1179 | stanza_id=stanza_id,
|
| 1180 | + msg_log_id=msg_log_id,
|
|
| 1177 | 1181 | additional_data=additional_data)
|
| 1178 | 1182 | |
| 1179 | 1183 | def _on_room_subject(self,
|
| ... | ... | @@ -176,7 +176,7 @@ def _create_popover(self, |
| 176 | 176 | def _on_activate_message_selection(self, _button: Gtk.ModelButton) -> None:
|
| 177 | 177 | app.window.activate_action(
|
| 178 | 178 | 'activate-message-selection',
|
| 179 | - GLib.Variant('u', self._row.log_line_id))
|
|
| 179 | + GLib.Variant('u', self._row.log_line_id or 0))
|
|
| 180 | 180 | |
| 181 | 181 | @staticmethod
|
| 182 | 182 | def _on_closed(popover: Gtk.Popover) -> None:
|