diff --git a/src/receive_imf.rs b/src/receive_imf.rs index 3a58c5473b..35c68328b9 100644 --- a/src/receive_imf.rs +++ b/src/receive_imf.rs @@ -614,6 +614,9 @@ pub(crate) async fn receive_imf_inner( chat_id.emit_msg_event(context, *msg_id, mime_parser.incoming && fresh); } } + if received_msg.state == MessageState::InSeen { + context.emit_event(EventType::MsgsNoticed(chat_id)); + } context.new_msgs_notify.notify_one(); mime_parser diff --git a/src/receive_imf/tests.rs b/src/receive_imf/tests.rs index 0bb83ceb95..274f5a08d5 100644 --- a/src/receive_imf/tests.rs +++ b/src/receive_imf/tests.rs @@ -269,6 +269,31 @@ async fn test_adhoc_groups_merge() -> Result<()> { Ok(()) } +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn test_msgs_noticed_on_seen_msg() -> Result<()> { + let mut tcm = TestContextManager::new(); + let alice = &tcm.alice().await; + let seen = true; + let rcvd_msg = receive_imf( + alice, + b"From: bob@example.net\n\ + To: alice@example.org\n\ + Message-ID: <3333@example.net>\n\ + Date: Sun, 22 Mar 2020 22:37:57 +0000\n\ + \n\ + This is a seen message.\n", + seen, + ) + .await? + .unwrap(); + let ev = alice + .evtracker + .get_matching(|e| matches!(e, EventType::MsgsNoticed { .. })) + .await; + assert_eq!(ev, EventType::MsgsNoticed(rcvd_msg.chat_id)); + Ok(()) +} + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_read_receipt_and_unarchive() -> Result<()> { // create alice's account