Allow synchronization of sent folder to rebuild local contacts

pull/153/head
M66B 7 years ago
parent 2c4494ddb0
commit 8d0fb2d564

@ -1229,15 +1229,18 @@ class Core {
attachment.id = db.attachment().insertAttachment(attachment); attachment.id = db.attachment().insertAttachment(attachment);
} }
if (!folder.isOutgoing() && if (!EntityFolder.ARCHIVE.equals(folder.type) &&
!EntityFolder.ARCHIVE.equals(folder.type) &&
!EntityFolder.TRASH.equals(folder.type) && !EntityFolder.TRASH.equals(folder.type) &&
!EntityFolder.JUNK.equals(folder.type)) { !EntityFolder.JUNK.equals(folder.type)) {
Address[] replies = (message.reply != null ? message.reply : message.from); int type = (folder.isOutgoing() ? EntityContact.TYPE_TO : EntityContact.TYPE_FROM);
if (replies != null) { Address[] recipients = (type == EntityContact.TYPE_TO
? message.to
: (message.reply != null ? message.reply : message.from));
if (recipients != null) {
// Check if from self // Check if from self
if (type == EntityContact.TYPE_FROM) {
boolean me = true; boolean me = true;
for (Address reply : replies) { for (Address reply : recipients) {
String email = ((InternetAddress) reply).getAddress(); String email = ((InternetAddress) reply).getAddress();
String canonical = Helper.canonicalAddress(email); String canonical = Helper.canonicalAddress(email);
if (!TextUtils.isEmpty(email) && if (!TextUtils.isEmpty(email) &&
@ -1249,30 +1252,31 @@ class Core {
} }
} }
if (me) if (me)
replies = message.to; recipients = message.to;
}
for (Address reply : replies) { for (Address recipient : recipients) {
String email = ((InternetAddress) reply).getAddress(); String email = ((InternetAddress) recipient).getAddress();
String name = ((InternetAddress) reply).getPersonal(); String name = ((InternetAddress) recipient).getPersonal();
Uri avatar = ContactInfo.getLookupUri(context, new Address[]{reply}); Uri avatar = ContactInfo.getLookupUri(context, new Address[]{recipient});
EntityContact contact = db.contact().getContact(EntityContact.TYPE_FROM, email); EntityContact contact = db.contact().getContact(type, email);
if (contact == null) { if (contact == null) {
contact = new EntityContact(); contact = new EntityContact();
contact.type = EntityContact.TYPE_FROM; contact.type = type;
contact.email = email; contact.email = email;
contact.name = name; contact.name = name;
contact.avatar = (avatar == null ? null : avatar.toString()); contact.avatar = (avatar == null ? null : avatar.toString());
contact.times_contacted = 1; contact.times_contacted = 1;
contact.last_contacted = message.received; contact.last_contacted = message.received;
contact.id = db.contact().insertContact(contact); contact.id = db.contact().insertContact(contact);
Log.i("Inserted sender contact=" + contact); Log.i("Inserted contact=" + contact + " type=" + type);
} else { } else {
contact.name = name; contact.name = name;
contact.avatar = (avatar == null ? null : avatar.toString()); contact.avatar = (avatar == null ? null : avatar.toString());
contact.times_contacted++; contact.times_contacted++;
contact.last_contacted = message.received; contact.last_contacted = message.received;
db.contact().updateContact(contact); db.contact().updateContact(contact);
Log.i("Updated sender contact=" + contact); Log.i("Updated contact=" + contact + " type=" + type);
} }
} }
} }

@ -26,7 +26,6 @@ import android.net.ConnectivityManager;
import android.net.Network; import android.net.Network;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.NetworkRequest; import android.net.NetworkRequest;
import android.net.Uri;
import android.os.PowerManager; import android.os.PowerManager;
import android.text.TextUtils; import android.text.TextUtils;
@ -363,32 +362,6 @@ public class ServiceSend extends LifecycleService {
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancel("send", message.identity.intValue()); nm.cancel("send", message.identity.intValue());
if (message.to != null)
for (Address recipient : message.to) {
String email = ((InternetAddress) recipient).getAddress();
String name = ((InternetAddress) recipient).getPersonal();
Uri avatar = ContactInfo.getLookupUri(this, new Address[]{recipient});
EntityContact contact = db.contact().getContact(EntityContact.TYPE_TO, email);
if (contact == null) {
contact = new EntityContact();
contact.type = EntityContact.TYPE_TO;
contact.email = email;
contact.name = name;
contact.avatar = (avatar == null ? null : avatar.toString());
contact.times_contacted = 1;
contact.last_contacted = time;
contact.id = db.contact().insertContact(contact);
Log.i("Inserted recipient contact=" + contact);
} else {
contact.name = name;
contact.avatar = (avatar == null ? null : avatar.toString());
contact.times_contacted++;
contact.last_contacted = time;
db.contact().updateContact(contact);
Log.i("Updated recipient contact=" + contact);
}
}
} catch (MessagingException ex) { } catch (MessagingException ex) {
if (ex instanceof SendFailedException) { if (ex instanceof SendFailedException) {
SendFailedException sfe = (SendFailedException) ex; SendFailedException sfe = (SendFailedException) ex;

Loading…
Cancel
Save