From ac5c789c758ed93cfcede215bb799df1e887e3d6 Mon Sep 17 00:00:00 2001 From: iequidoo Date: Tue, 14 Nov 2023 00:03:08 -0300 Subject: [PATCH] feat: Never drop better message from apply_group_changes() Looks like this doesn't fix anything currently, because a better message from `apply_group_changes()` doesn't appear in a context with another better message, but why drop it if it's possible to add it, moreover, messages about implicit member additions are never dropped while looking less important. --- src/receive_imf.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/receive_imf.rs b/src/receive_imf.rs index 01d446d47..0893d6b68 100644 --- a/src/receive_imf.rs +++ b/src/receive_imf.rs @@ -463,7 +463,7 @@ async fn add_parts( let mut chat_id_blocked = Blocked::Not; let mut better_msg = None; - let mut group_changes_msgs = Vec::new(); + let mut group_changes_msgs = (Vec::new(), None); if mime_parser.is_system_message == SystemMessage::LocationStreamingEnabled { better_msg = Some(stock_str::msg_location_enabled_by(context, from_id).await); } @@ -656,8 +656,7 @@ async fn add_parts( } } - let new_better_msg; - (group_changes_msgs, new_better_msg) = apply_group_changes( + group_changes_msgs = apply_group_changes( context, mime_parser, sent_timestamp, @@ -667,7 +666,6 @@ async fn add_parts( is_partial_download.is_some(), ) .await?; - better_msg = better_msg.or(new_better_msg) } if chat_id.is_none() { @@ -901,8 +899,7 @@ async fn add_parts( } if let Some(chat_id) = chat_id { - let new_better_msg; - (group_changes_msgs, new_better_msg) = apply_group_changes( + group_changes_msgs = apply_group_changes( context, mime_parser, sent_timestamp, @@ -912,7 +909,6 @@ async fn add_parts( is_partial_download.is_some(), ) .await?; - better_msg = better_msg.or(new_better_msg) } if chat_id.is_none() && self_sent { @@ -1142,7 +1138,13 @@ async fn add_parts( let mut created_db_entries = Vec::with_capacity(mime_parser.parts.len()); - group_changes_msgs = group_changes_msgs.into_iter().rev().collect(); + if let Some(msg) = group_changes_msgs.1 { + match &better_msg { + None => better_msg = Some(msg), + Some(_) => group_changes_msgs.0.push(msg), + } + } + let mut group_changes_msgs: Vec<_> = group_changes_msgs.0.into_iter().rev().collect(); let mut parts = mime_parser.parts.iter_mut().peekable(); while let Some(part) = parts.peek() { if part.is_reaction { @@ -1309,7 +1311,7 @@ RETURNING id debug_assert!(!row_id.is_special()); created_db_entries.push(row_id); - if group_changes_msg.is_none() && group_changes_msgs.is_empty() { + if group_changes_msg.is_none() { parts.next(); } }