Dedup addresses

pull/194/merge
M66B 3 years ago
parent c49156788e
commit f6070d8795

@ -5506,9 +5506,9 @@ public class FragmentCompose extends FragmentBase {
// Get data
InternetAddress[] afrom = (identity == null ? null : new InternetAddress[]{new InternetAddress(identity.email, identity.name, StandardCharsets.UTF_8.name())});
InternetAddress[] ato = MessageHelper.parseAddresses(context, to);
InternetAddress[] acc = MessageHelper.parseAddresses(context, cc);
InternetAddress[] abcc = MessageHelper.parseAddresses(context, bcc);
InternetAddress[] ato = MessageHelper.dedup(MessageHelper.parseAddresses(context, to));
InternetAddress[] acc = MessageHelper.dedup(MessageHelper.parseAddresses(context, cc));
InternetAddress[] abcc = MessageHelper.dedup(MessageHelper.parseAddresses(context, bcc));
// Safe guard
if (action == R.id.action_send) {

@ -3175,6 +3175,23 @@ public class MessageHelper {
return addresses;
}
static InternetAddress[] dedup(InternetAddress[] addresses) {
if (addresses == null)
return null;
List<String> emails = new ArrayList<>();
List<Address> result = new ArrayList<>();
for (InternetAddress address : addresses) {
String email = address.getAddress();
if (!emails.contains(email)) {
emails.add(email);
result.add(address);
}
}
return result.toArray(new InternetAddress[0]);
}
static boolean isRemoved(Throwable ex) {
while (ex != null) {
if (ex instanceof MessageRemovedException ||

Loading…
Cancel
Save