mirror of
https://github.com/chatmail/core.git
synced 2026-05-03 13:26:28 +03:00
fix: markseen_msgs(): Mark reactions to specified messages as seen too (#7884)
This allows to remove notifications for reactions from other devices. NB: UIs should pass all messages to markseen_msgs(), incl. outgoing ones. markseen_msgs() should be called when a message comes into view or when a reaction for a message being in view arrives. Also don't emit `MsgsNoticed` from receive_imf_inner() if the chat still contains fresh hidden messages, i.e. include reactions into this logic, to avoid removing notifications for reactions until they are seen on another device.
This commit is contained in:
@@ -1108,4 +1108,37 @@ Content-Transfer-Encoding: 7bit\r
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn test_markseen_referenced_msg() -> Result<()> {
|
||||
let mut tcm = TestContextManager::new();
|
||||
let alice = &tcm.alice().await;
|
||||
let bob = &tcm.bob().await;
|
||||
let chat_id = alice.create_chat(bob).await.id;
|
||||
|
||||
let alice_msg_id = send_text_msg(alice, chat_id, "foo".to_string()).await?;
|
||||
let sent_msg = alice.pop_sent_msg().await;
|
||||
let bob_msg = bob.recv_msg(&sent_msg).await;
|
||||
bob_msg.chat_id.accept(bob).await?;
|
||||
|
||||
send_reaction(bob, bob_msg.id, "👀").await?;
|
||||
let sent_msg = bob.pop_sent_msg().await;
|
||||
let alice_reaction = alice.recv_msg_hidden(&sent_msg).await;
|
||||
assert_eq!(alice_reaction.state, MessageState::InFresh);
|
||||
|
||||
markseen_msgs(alice, vec![alice_msg_id]).await?;
|
||||
let alice_reaction = Message::load_from_db(alice, alice_reaction.id).await?;
|
||||
assert_eq!(alice_reaction.state, MessageState::InSeen);
|
||||
assert_eq!(
|
||||
alice
|
||||
.sql
|
||||
.count(
|
||||
"SELECT COUNT(*) FROM smtp_mdns WHERE from_id=?",
|
||||
(ContactId::SELF,)
|
||||
)
|
||||
.await?,
|
||||
1
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user