From 423d026cadab09d73079bdc857970698044cfcfb Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 5 Apr 2019 08:33:43 +0200 Subject: [PATCH] Always cache lookup URIs --- .../main/java/eu/faircode/email/ContactInfo.java | 13 ++++++------- app/src/main/java/eu/faircode/email/Core.java | 4 ++-- app/src/main/java/eu/faircode/email/EntityRule.java | 2 +- .../java/eu/faircode/email/FragmentCompose.java | 4 ++-- .../main/java/eu/faircode/email/WorkerCleanup.java | 3 ++- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ContactInfo.java b/app/src/main/java/eu/faircode/email/ContactInfo.java index 34bad320a6..6424c08071 100644 --- a/app/src/main/java/eu/faircode/email/ContactInfo.java +++ b/app/src/main/java/eu/faircode/email/ContactInfo.java @@ -153,7 +153,7 @@ public class ContactInfo { return info; } - static Uri getLookupUri(Context context, Address[] addresses, boolean useCache) { + static Uri getLookupUri(Context context, Address[] addresses) { if (!Helper.hasPermission(context, Manifest.permission.READ_CONTACTS)) return null; @@ -161,12 +161,11 @@ public class ContactInfo { return null; InternetAddress address = (InternetAddress) addresses[0]; - if (useCache) - synchronized (emailLookupInfo) { - LookupInfo info = emailLookupInfo.get(address.getAddress()); - if (info != null && !info.isExpired()) - return info.uri; - } + synchronized (emailLookupInfo) { + LookupInfo info = emailLookupInfo.get(address.getAddress()); + if (info != null && !info.isExpired()) + return info.uri; + } try { ContentResolver resolver = context.getContentResolver(); diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 5d8618f18b..86a9d034e1 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1189,7 +1189,7 @@ class Core { message.ui_browsed = browsed; message.sender = MessageHelper.getSortKey(message.from); - Uri lookupUri = ContactInfo.getLookupUri(context, message.from, true); + Uri lookupUri = ContactInfo.getLookupUri(context, message.from); message.avatar = (lookupUri == null ? null : lookupUri.toString()); Address sender = helper.getSender(); // header @@ -1365,7 +1365,7 @@ class Core { for (Address recipient : recipients) { String email = ((InternetAddress) recipient).getAddress(); String name = ((InternetAddress) recipient).getPersonal(); - Uri avatar = ContactInfo.getLookupUri(context, new Address[]{recipient}, true); + Uri avatar = ContactInfo.getLookupUri(context, new Address[]{recipient}); EntityContact contact = db.contact().getContact(folder.account, type, email); if (contact == null) { contact = new EntityContact(); diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index c3a5109f2e..19d9562ce6 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -260,7 +260,7 @@ public class EntityRule { reply.received = new Date().getTime(); reply.sender = MessageHelper.getSortKey(reply.from); - Uri lookupUri = ContactInfo.getLookupUri(context, reply.from, true); + Uri lookupUri = ContactInfo.getLookupUri(context, reply.from); reply.avatar = (lookupUri == null ? null : lookupUri.toString()); reply.id = db.message().insertMessage(reply); diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index c9602c95b3..9fc225a31a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1815,7 +1815,7 @@ public class FragmentCompose extends FragmentBase { } draft.sender = MessageHelper.getSortKey(draft.from); - Uri lookupUri = ContactInfo.getLookupUri(context, draft.from, true); + Uri lookupUri = ContactInfo.getLookupUri(context, draft.from); draft.avatar = (lookupUri == null ? null : lookupUri.toString()); draft.received = new Date().getTime(); @@ -2174,7 +2174,7 @@ public class FragmentCompose extends FragmentBase { draft.received = new Date().getTime(); draft.sender = MessageHelper.getSortKey(draft.from); - Uri lookupUri = ContactInfo.getLookupUri(context, draft.from, true); + Uri lookupUri = ContactInfo.getLookupUri(context, draft.from); draft.avatar = (lookupUri == null ? null : lookupUri.toString()); db.message().updateMessage(draft); diff --git a/app/src/main/java/eu/faircode/email/WorkerCleanup.java b/app/src/main/java/eu/faircode/email/WorkerCleanup.java index ea794d0118..8c3e5545de 100644 --- a/app/src/main/java/eu/faircode/email/WorkerCleanup.java +++ b/app/src/main/java/eu/faircode/email/WorkerCleanup.java @@ -125,6 +125,7 @@ public class WorkerCleanup extends Worker { Log.i("Deleted logs=" + logs); Log.i("Update lookup URIs"); + ContactInfo.clearCache(); List folders = db.folder().getSynchronizingFolders(); for (EntityFolder folder : folders) { Calendar cal = Calendar.getInstance(); @@ -141,7 +142,7 @@ public class WorkerCleanup extends Worker { List avatars = db.message().getAvatars(folder.id, sync_time); for (TupleMessageLookup message : avatars) { Uri uri = (message.avatar == null ? null : Uri.parse(message.avatar)); - Uri lookup = ContactInfo.getLookupUri(context, message.from, false); + Uri lookup = ContactInfo.getLookupUri(context, message.from); if (!Objects.equals(uri, lookup)) { Log.i("Updating email=" + MessageHelper.formatAddresses(message.from) + " uri=" + lookup); db.message().setMessageAvatar(message.id, lookup == null ? null : lookup.toString());