@@ -69,6 +69,9 @@ pub struct MimeFactory {
69
69
/// Vector of pairs of recipient name and address
70
70
recipients : Vec < ( String , String ) > ,
71
71
72
+ /// Vector of pairs of past group member name and addresses.
73
+ past_members : Vec < ( String , String ) > ,
74
+
72
75
timestamp : i64 ,
73
76
loaded : Loaded ,
74
77
in_reply_to : String ,
@@ -146,6 +149,7 @@ impl MimeFactory {
146
149
} ;
147
150
148
151
let mut recipients = Vec :: with_capacity ( 5 ) ;
152
+ let mut past_members = Vec :: new ( ) ;
149
153
let mut recipient_ids = HashSet :: new ( ) ;
150
154
let mut req_mdn = false ;
151
155
@@ -179,18 +183,21 @@ impl MimeFactory {
179
183
|rows| {
180
184
for row in rows {
181
185
let ( authname, addr, id, add_timestamp, remove_timestamp) = row?;
186
+ let name = match attach_profile_data {
187
+ true => authname,
188
+ false => "" . to_string ( ) ,
189
+ } ;
182
190
if add_timestamp >= remove_timestamp {
183
191
if !recipients_contain_addr ( & recipients, & addr) {
184
- let name = match attach_profile_data {
185
- true => authname,
186
- false => "" . to_string ( ) ,
187
- } ;
188
192
recipients. push ( ( name, addr) ) ;
189
193
}
190
194
recipient_ids. insert ( id) ;
191
195
} else {
192
196
// Row is a tombstone,
193
197
// member is not actually part of the group.
198
+ if !recipients_contain_addr ( & past_members, & addr) {
199
+ past_members. push ( ( name, addr) ) ;
200
+ }
194
201
}
195
202
}
196
203
Ok ( ( ) )
@@ -239,6 +246,7 @@ impl MimeFactory {
239
246
sender_displayname,
240
247
selfstatus,
241
248
recipients,
249
+ past_members,
242
250
timestamp : msg. timestamp_sort ,
243
251
loaded : Loaded :: Message { msg, chat } ,
244
252
in_reply_to,
@@ -267,6 +275,7 @@ impl MimeFactory {
267
275
sender_displayname : None ,
268
276
selfstatus : "" . to_string ( ) ,
269
277
recipients : vec ! [ ( "" . to_string( ) , contact. get_addr( ) . to_string( ) ) ] ,
278
+ past_members : vec ! [ ] ,
270
279
timestamp,
271
280
loaded : Loaded :: Mdn {
272
281
rfc724_mid,
0 commit comments