From fda65c1f24e5c314bd3ce4d59315d1b795b776b0 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 2 Oct 2019 13:36:07 +0200 Subject: [PATCH] Underline known contacts --- .../java/eu/faircode/email/AdapterMessage.java | 14 ++++++++++++-- .../java/eu/faircode/email/ContactInfo.java | 17 +++++++++++++++-- app/src/main/java/eu/faircode/email/Core.java | 2 +- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index a7b2fb34ef..696fb08d53 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -36,6 +36,7 @@ import android.content.pm.PackageManager; import android.content.res.ColorStateList; import android.database.Cursor; import android.graphics.Color; +import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.drawable.AnimatedImageDrawable; @@ -189,6 +190,7 @@ public class AdapterMessage extends RecyclerView.Adapter() { @@ -850,8 +854,10 @@ public class AdapterMessage extends RecyclerView.Adapter emailLookup = new ConcurrentHashMap<>(); - private static Map emailContactInfo = new HashMap<>(); + private static final Map emailContactInfo = new HashMap<>(); private static final ExecutorService executor = Executors.newSingleThreadExecutor(Helper.backgroundThreadFactory); @@ -95,6 +96,10 @@ public class ContactInfo { return lookupUri; } + boolean isKnown() { + return known; + } + private boolean isExpired() { return (new Date().getTime() - time > CACHE_CONTACT_DURATION); } @@ -105,7 +110,7 @@ public class ContactInfo { } } - static ContactInfo get(Context context, Address[] addresses, boolean cacheOnly) { + static ContactInfo get(Context context, long account, Address[] addresses, boolean cacheOnly) { if (addresses == null || addresses.length == 0) return new ContactInfo(); InternetAddress address = (InternetAddress) addresses[0]; @@ -155,6 +160,7 @@ public class ContactInfo { info.displayName = cursor.getString(colDisplayName); info.lookupUri = lookupUri; + info.known = true; } } catch (Throwable ex) { Log.e(ex); @@ -216,6 +222,13 @@ public class ContactInfo { if (info.displayName == null) info.displayName = address.getPersonal(); + if (!info.known) { + DB db = DB.getInstance(context); + EntityContact contact = db.contact().getContact(account, EntityContact.TYPE_TO, info.email); + + info.known = (contact != null); + } + synchronized (emailContactInfo) { emailContactInfo.put(key, info); } diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 08572b20a2..ac271d8db0 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2682,7 +2682,7 @@ class Core { // Get contact info Map messageContact = new HashMap<>(); for (TupleMessageEx message : messages) - messageContact.put(message, ContactInfo.get(context, message.from, false)); + messageContact.put(message, ContactInfo.get(context, message.account, message.from, false)); // Summary notification if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N || notify_summary) {