@@ -54,6 +54,9 @@ pub struct ReceivedMsg {
54
54
/// Received message state.
55
55
pub state : MessageState ,
56
56
57
+ /// Whether the message is hidden.
58
+ pub hidden : bool ,
59
+
57
60
/// Message timestamp for sorting.
58
61
pub sort_timestamp : i64 ,
59
62
@@ -192,6 +195,7 @@ pub(crate) async fn receive_imf_inner(
192
195
return Ok ( Some ( ReceivedMsg {
193
196
chat_id : DC_CHAT_ID_TRASH ,
194
197
state : MessageState :: Undefined ,
198
+ hidden : false ,
195
199
sort_timestamp : 0 ,
196
200
msg_ids,
197
201
needs_delete_job : false ,
@@ -373,6 +377,7 @@ pub(crate) async fn receive_imf_inner(
373
377
received_msg = Some ( ReceivedMsg {
374
378
chat_id : DC_CHAT_ID_TRASH ,
375
379
state : MessageState :: InSeen ,
380
+ hidden : false ,
376
381
sort_timestamp : mime_parser. timestamp_sent ,
377
382
msg_ids : vec ! [ msg_id] ,
378
383
needs_delete_job : res == securejoin:: HandshakeMessage :: Done ,
@@ -611,7 +616,11 @@ pub(crate) async fn receive_imf_inner(
611
616
} else if !chat_id. is_trash ( ) {
612
617
let fresh = received_msg. state == MessageState :: InFresh ;
613
618
for msg_id in & received_msg. msg_ids {
614
- chat_id. emit_msg_event ( context, * msg_id, mime_parser. incoming && fresh) ;
619
+ chat_id. emit_msg_event (
620
+ context,
621
+ * msg_id,
622
+ mime_parser. incoming && fresh && !received_msg. hidden ,
623
+ ) ;
615
624
}
616
625
}
617
626
context. new_msgs_notify . notify_one ( ) ;
@@ -1018,7 +1027,14 @@ async fn add_parts(
1018
1027
}
1019
1028
}
1020
1029
1021
- state = if seen || fetching_existing_messages || is_mdn || chat_id_blocked == Blocked :: Yes {
1030
+ state = if seen
1031
+ || fetching_existing_messages
1032
+ || is_mdn
1033
+ // Currently only reactions are hidden, so this check is just in case we have other
1034
+ // hidden messages in the future to make `chat::marknoticed_chat()` no-op for them.
1035
+ || ( hidden && !is_reaction)
1036
+ || chat_id_blocked == Blocked :: Yes
1037
+ {
1022
1038
MessageState :: InSeen
1023
1039
} else {
1024
1040
MessageState :: InFresh
@@ -1730,6 +1746,7 @@ RETURNING id
1730
1746
Ok ( ReceivedMsg {
1731
1747
chat_id,
1732
1748
state,
1749
+ hidden,
1733
1750
sort_timestamp,
1734
1751
msg_ids : created_db_entries,
1735
1752
needs_delete_job,
0 commit comments