@@ -2330,21 +2330,18 @@ async fn apply_group_changes(
2330
2330
let mut removed_ids = HashSet :: < ContactId > :: new ( ) ;
2331
2331
2332
2332
if !recreate_member_list {
2333
+ if mime_parser. get_header ( HeaderDef :: ChatVersion ) . is_none ( ) {
2334
+ // Allow non-Delta Chat MUAs to add members.
2335
+ added_ids = new_members. difference ( & chat_contacts) . copied ( ) . collect ( ) ;
2336
+ }
2337
+
2333
2338
if let Some ( added_id) = added_id {
2334
2339
added_ids. insert ( added_id) ;
2335
2340
}
2341
+
2336
2342
new_members. clone_from ( & chat_contacts) ;
2337
2343
// Don't delete any members locally, but instead add absent ones to provide group
2338
2344
// membership consistency for all members:
2339
- // - Classical MUA users usually don't intend to remove users from an email thread, so
2340
- // if they removed a recipient then it was probably by accident.
2341
- // - DC users could miss new member additions and then better to handle this in the same
2342
- // way as for classical MUA messages. Moreover, if we remove a member implicitly, they
2343
- // will never know that and continue to think they're still here.
2344
- // But it shouldn't be a big problem if somebody missed a member removal, because they
2345
- // will likely recreate the member list from the next received message. The problem
2346
- // occurs only if that "somebody" managed to reply earlier. Really, it's a problem for
2347
- // big groups with high message rate, but let it be for now.
2348
2345
new_members. extend ( added_ids. clone ( ) ) ;
2349
2346
}
2350
2347
if let Some ( removed_id) = removed_id {
0 commit comments