From c680432c233f373bea25283f2968cdad52f2e08c Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 11 Aug 2026 21:21:16 +0200 Subject: [PATCH] fix: filtered reactions are info, not error in device chat bail!() bubbles up the error until it lands in the device chat, which is way over the top for a reaction that is filtered out by channel owner. currently this happens, as arcance chat uses different default reactions. in the future, this may happen even more often when we allow custom filters, that may change over time. --- src/reaction.rs | 3 ++- src/reaction/broadcast_reactions.rs | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/reaction.rs b/src/reaction.rs index f51d01463..c90c4a6c8 100644 --- a/src/reaction.rs +++ b/src/reaction.rs @@ -137,7 +137,8 @@ async fn set_msg_id_reaction( if matches!(chat.typ, Chattype::OutBroadcast | Chattype::InBroadcast) && !is_allowed_reaction(reaction) { - bail!("Reaction not allowed: {}", reaction.as_str()); + info!(context, "Reaction {} filtered.", reaction.as_str()); + return Ok(()); } if reaction.is_empty() { diff --git a/src/reaction/broadcast_reactions.rs b/src/reaction/broadcast_reactions.rs index adca47e09..460e3130e 100644 --- a/src/reaction/broadcast_reactions.rs +++ b/src/reaction/broadcast_reactions.rs @@ -174,6 +174,7 @@ async fn broadcast_reactions_for_one_chat(context: &Context, chat_id: ChatId) -> /// Applies incoming, accumulated reactions received via the `Chat-Broadcast-States:` header /// to the `broadcasted_reactions` table. +/// We do not check against allowed reactions here; reactions may be done in the past when different filters were active. pub(crate) async fn receive_broadcast_reactions(context: &Context, json: &str) -> Result<()> { let payload: WirePayload = serde_json::from_str(json)?;