mirror of
https://github.com/chatmail/core.git
synced 2026-10-02 11:10:25 +03:00
fix: Don't notify about a reaction sent by a blocked contact (#8729)
Fixes https://github.com/chatmail/core/issues/8692: Now the user does not get notifications when a blocked contact reacts to some message. What this PR does not change is what happens when being in a group with a blocked contact; it only fixes this obvious bug. I checked that the test fails without the fix.
This commit is contained in:
+2
-1
@@ -2107,7 +2107,8 @@ async fn add_parts(
|
|||||||
let hidden = part.is_reaction;
|
let hidden = part.is_reaction;
|
||||||
if part.is_reaction {
|
if part.is_reaction {
|
||||||
let reaction_str = simplify::remove_footers(part.msg.as_str());
|
let reaction_str = simplify::remove_footers(part.msg.as_str());
|
||||||
let is_incoming_fresh = mime_parser.incoming && !seen;
|
let is_incoming_fresh =
|
||||||
|
mime_parser.incoming && !seen && chat_id_blocked == Blocked::Not;
|
||||||
set_msg_reaction(
|
set_msg_reaction(
|
||||||
context,
|
context,
|
||||||
mime_in_reply_to,
|
mime_in_reply_to,
|
||||||
|
|||||||
@@ -3364,6 +3364,35 @@ async fn test_blocked_contact_creates_group() -> Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||||
|
async fn test_blocked_contact_sends_reaction() -> Result<()> {
|
||||||
|
let mut tcm = TestContextManager::new();
|
||||||
|
let alice = &tcm.alice().await;
|
||||||
|
let bob = &tcm.bob().await;
|
||||||
|
|
||||||
|
let bob_msg_id = tcm.send_recv_accept(alice, bob, "Hi!").await.id;
|
||||||
|
|
||||||
|
let chat = alice.get_chat(bob).await;
|
||||||
|
chat.id.block(alice).await?;
|
||||||
|
|
||||||
|
crate::reaction::send_reaction(bob, bob_msg_id, "👍").await?;
|
||||||
|
let sent = bob.pop_sent_msg().await;
|
||||||
|
alice.recv_msg_hidden(&sent).await;
|
||||||
|
alice.emit_event(EventType::Test);
|
||||||
|
|
||||||
|
while let Some(ev) = alice.evtracker.recv().await {
|
||||||
|
match ev.typ {
|
||||||
|
EventType::IncomingReaction { .. } => {
|
||||||
|
panic!("Alice is not supposed to receive a notification, since she blocked Bob")
|
||||||
|
}
|
||||||
|
EventType::Test => break,
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||||
async fn test_outgoing_undecryptable() -> Result<()> {
|
async fn test_outgoing_undecryptable() -> Result<()> {
|
||||||
let alice = &TestContext::new().await;
|
let alice = &TestContext::new().await;
|
||||||
|
|||||||
Reference in New Issue
Block a user