Always cache lookup URIs

pull/153/head
M66B 7 years ago
parent 3f2c34fbf5
commit 423d026cad

@ -153,7 +153,7 @@ public class ContactInfo {
return info; 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)) if (!Helper.hasPermission(context, Manifest.permission.READ_CONTACTS))
return null; return null;
@ -161,7 +161,6 @@ public class ContactInfo {
return null; return null;
InternetAddress address = (InternetAddress) addresses[0]; InternetAddress address = (InternetAddress) addresses[0];
if (useCache)
synchronized (emailLookupInfo) { synchronized (emailLookupInfo) {
LookupInfo info = emailLookupInfo.get(address.getAddress()); LookupInfo info = emailLookupInfo.get(address.getAddress());
if (info != null && !info.isExpired()) if (info != null && !info.isExpired())

@ -1189,7 +1189,7 @@ class Core {
message.ui_browsed = browsed; message.ui_browsed = browsed;
message.sender = MessageHelper.getSortKey(message.from); 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()); message.avatar = (lookupUri == null ? null : lookupUri.toString());
Address sender = helper.getSender(); // header Address sender = helper.getSender(); // header
@ -1365,7 +1365,7 @@ class Core {
for (Address recipient : recipients) { for (Address recipient : recipients) {
String email = ((InternetAddress) recipient).getAddress(); String email = ((InternetAddress) recipient).getAddress();
String name = ((InternetAddress) recipient).getPersonal(); 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); EntityContact contact = db.contact().getContact(folder.account, type, email);
if (contact == null) { if (contact == null) {
contact = new EntityContact(); contact = new EntityContact();

@ -260,7 +260,7 @@ public class EntityRule {
reply.received = new Date().getTime(); reply.received = new Date().getTime();
reply.sender = MessageHelper.getSortKey(reply.from); 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.avatar = (lookupUri == null ? null : lookupUri.toString());
reply.id = db.message().insertMessage(reply); reply.id = db.message().insertMessage(reply);

@ -1815,7 +1815,7 @@ public class FragmentCompose extends FragmentBase {
} }
draft.sender = MessageHelper.getSortKey(draft.from); 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.avatar = (lookupUri == null ? null : lookupUri.toString());
draft.received = new Date().getTime(); draft.received = new Date().getTime();
@ -2174,7 +2174,7 @@ public class FragmentCompose extends FragmentBase {
draft.received = new Date().getTime(); draft.received = new Date().getTime();
draft.sender = MessageHelper.getSortKey(draft.from); 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.avatar = (lookupUri == null ? null : lookupUri.toString());
db.message().updateMessage(draft); db.message().updateMessage(draft);

@ -125,6 +125,7 @@ public class WorkerCleanup extends Worker {
Log.i("Deleted logs=" + logs); Log.i("Deleted logs=" + logs);
Log.i("Update lookup URIs"); Log.i("Update lookup URIs");
ContactInfo.clearCache();
List<EntityFolder> folders = db.folder().getSynchronizingFolders(); List<EntityFolder> folders = db.folder().getSynchronizingFolders();
for (EntityFolder folder : folders) { for (EntityFolder folder : folders) {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
@ -141,7 +142,7 @@ public class WorkerCleanup extends Worker {
List<TupleMessageLookup> avatars = db.message().getAvatars(folder.id, sync_time); List<TupleMessageLookup> avatars = db.message().getAvatars(folder.id, sync_time);
for (TupleMessageLookup message : avatars) { for (TupleMessageLookup message : avatars) {
Uri uri = (message.avatar == null ? null : Uri.parse(message.avatar)); 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)) { if (!Objects.equals(uri, lookup)) {
Log.i("Updating email=" + MessageHelper.formatAddresses(message.from) + " uri=" + lookup); Log.i("Updating email=" + MessageHelper.formatAddresses(message.from) + " uri=" + lookup);
db.message().setMessageAvatar(message.id, lookup == null ? null : lookup.toString()); db.message().setMessageAvatar(message.id, lookup == null ? null : lookup.toString());

Loading…
Cancel
Save