Fixed reply all (3)

This commit is contained in:
M66B
2019-05-29 14:09:54 +02:00
parent b6fd02234b
commit 5b704136ee
3 changed files with 99 additions and 55 deletions

View File

@@ -40,6 +40,7 @@ import java.util.Objects;
import java.util.Random;
import javax.mail.Address;
import javax.mail.internet.InternetAddress;
import static androidx.room.ForeignKey.CASCADE;
import static androidx.room.ForeignKey.SET_NULL;
@@ -159,16 +160,28 @@ public class EntityMessage implements Serializable {
return sb.toString();
}
Address[] getAll() {
Address[] getAllRecipients(String via) {
List<Address> addresses = new ArrayList<>();
if (reply != null && reply.length > 0)
addresses.addAll(Arrays.asList(reply));
else if (to != null)
addresses.addAll(Arrays.asList(to));
String r = null;
Address[] replying = (reply == null || reply.length == 0 ? from : reply);
if (replying != null && replying.length == 1)
r = MessageHelper.canonicalAddress(((InternetAddress) replying[0]).getAddress());
if (r == null && !r.equals(via)) {
if (to != null)
addresses.addAll(Arrays.asList(to));
}
if (cc != null)
addresses.addAll(Arrays.asList(cc));
// Filter self
for (Address address : new ArrayList<>(addresses)) {
String recipient = MessageHelper.canonicalAddress(((InternetAddress) address).getAddress());
if (recipient.equals(via))
addresses.remove(address);
}
return addresses.toArray(new Address[0]);
}