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:
Hocuri
2026-09-21 22:09:20 +02:00
committed by GitHub
parent aa0800b6e0
commit 362cc76c83
2 changed files with 31 additions and 1 deletions

View File

@@ -2107,7 +2107,8 @@ async fn add_parts(
let hidden = part.is_reaction;
if part.is_reaction {
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(
context,
mime_in_reply_to,

View File

@@ -3364,6 +3364,35 @@ async fn test_blocked_contact_creates_group() -> Result<()> {
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)]
async fn test_outgoing_undecryptable() -> Result<()> {
let alice = &TestContext::new().await;