diff --git a/src/receive_imf.rs b/src/receive_imf.rs index 6b9e9d847..bfac21bb0 100644 --- a/src/receive_imf.rs +++ b/src/receive_imf.rs @@ -1143,9 +1143,23 @@ async fn add_parts( 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() { + + for group_changes_msg in group_changes_msgs.0 { + // Currently all additional group changes messages are "Member added". + chat::add_info_msg_with_cmd( + context, + chat_id, + &group_changes_msg, + SystemMessage::MemberAddedToGroup, + sort_timestamp, + None, + None, + None, + ) + .await?; + } + + for part in &mime_parser.parts { if part.is_reaction { let reaction_str = simplify::remove_footers(part.msg.as_str()); set_msg_reaction( @@ -1178,10 +1192,7 @@ async fn add_parts( } let mut txt_raw = "".to_string(); - let group_changes_msg = group_changes_msgs.pop(); - let (msg, typ): (&str, Viewtype) = if let Some(msg) = &group_changes_msg { - (msg, Viewtype::Text) - } else if let Some(better_msg) = &better_msg { + let (msg, typ): (&str, Viewtype) = if let Some(better_msg) = &better_msg { (better_msg, Viewtype::Text) } else { (&part.msg, part.typ) @@ -1309,10 +1320,6 @@ RETURNING id debug_assert!(!row_id.is_special()); created_db_entries.push(row_id); - - if group_changes_msg.is_none() { - parts.next(); - } } // check all parts whether they contain a new logging webxdc diff --git a/test-data/golden/chat_test_msg_with_implicit_member_add b/test-data/golden/chat_test_msg_with_implicit_member_add index f45dff499..41f3677e3 100644 --- a/test-data/golden/chat_test_msg_with_implicit_member_add +++ b/test-data/golden/chat_test_msg_with_implicit_member_add @@ -3,6 +3,6 @@ Group#Chat#10: Group chat [3 member(s)] Msg#10: (Contact#Contact#11): I created a group [FRESH] Msg#11: (Contact#Contact#11): Member Fiona (fiona@example.net) added by alice@example.org. [FRESH][INFO] Msg#12: Me (Contact#Contact#Self): You removed member Fiona (fiona@example.net). [INFO] o -Msg#13: (Contact#Contact#11): Member Fiona (fiona@example.net) added. [FRESH] +Msg#13: info (Contact#Contact#Info): Member Fiona (fiona@example.net) added. [NOTICED][INFO] Msg#14: (Contact#Contact#11): Welcome, Fiona! [FRESH] -------------------------------------------------------------------------------- diff --git a/test-data/golden/chat_test_simultaneous_member_remove b/test-data/golden/chat_test_simultaneous_member_remove index ea742edb8..ae35ed627 100644 --- a/test-data/golden/chat_test_simultaneous_member_remove +++ b/test-data/golden/chat_test_simultaneous_member_remove @@ -2,6 +2,6 @@ Group#Chat#10: Group chat [4 member(s)] -------------------------------------------------------------------------------- Msg#10: (Contact#Contact#10): Hi! I created a group. [FRESH] Msg#11: Me (Contact#Contact#Self): You left the group. [INFO] o -Msg#12: (Contact#Contact#10): Member Me (bob@example.net) added. [FRESH][INFO] +Msg#12: info (Contact#Contact#Info): Member Me (bob@example.net) added. [NOTICED][INFO] Msg#13: (Contact#Contact#10): Member claire@example.net added by alice@example.org. [FRESH][INFO] --------------------------------------------------------------------------------