From 137ac9a027d93c7a1f84d19a1a206c49f0c89f86 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Fri, 7 Aug 2026 13:27:13 +0200 Subject: [PATCH] updating pinned state only allowed if 'from' is part of the chat --- src/receive_imf.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/receive_imf.rs b/src/receive_imf.rs index 922251f6e..4f5d986aa 100644 --- a/src/receive_imf.rs +++ b/src/receive_imf.rs @@ -2143,8 +2143,14 @@ async fn add_parts( && let Some(msg_to_change) = get_parent_message(context, None, mime_parser.get_header(HeaderDef::InReplyTo)).await? { - let new_pinned_state = mime_parser.is_system_message == SystemMessage::MessagePinned; - handle_pinned_state_from_wire(context, &msg_to_change, new_pinned_state).await?; + let chat_contacts = + BTreeSet::::from_iter(chat::get_chat_contacts(context, chat_id).await?); + let is_from_in_chat = + !chat_contacts.contains(&ContactId::SELF) || chat_contacts.contains(&from_id); + if is_from_in_chat { + let new_pinned_state = mime_parser.is_system_message == SystemMessage::MessagePinned; + handle_pinned_state_from_wire(context, &msg_to_change, new_pinned_state).await?; + } } let hidden = mime_parser.parts.iter().all(|part| part.is_reaction);