mirror of
https://github.com/M66B/FairEmail.git
synced 2025-01-01 12:44:42 +00:00
Case insensitive email lookup
This commit is contained in:
parent
be60e5f07a
commit
ad75914803
1 changed files with 19 additions and 15 deletions
|
@ -155,11 +155,12 @@ public class ContactInfo {
|
|||
boolean identicons = prefs.getBoolean("identicons", false);
|
||||
boolean circular = prefs.getBoolean("circular", true);
|
||||
|
||||
if (Helper.hasPermission(context, Manifest.permission.READ_CONTACTS)) {
|
||||
if (!TextUtils.isEmpty(info.email) &&
|
||||
Helper.hasPermission(context, Manifest.permission.READ_CONTACTS)) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
Uri uri = Uri.withAppendedPath(
|
||||
ContactsContract.CommonDataKinds.Email.CONTENT_LOOKUP_URI,
|
||||
Uri.encode(address.getAddress()));
|
||||
Uri.encode(info.email.toLowerCase(Locale.ROOT)));
|
||||
try (Cursor cursor = resolver.query(uri,
|
||||
new String[]{
|
||||
ContactsContract.CommonDataKinds.Photo.CONTACT_ID,
|
||||
|
@ -195,8 +196,8 @@ public class ContactInfo {
|
|||
}
|
||||
|
||||
if (info.bitmap == null) {
|
||||
if (gravatars) {
|
||||
String gkey = address.getAddress().toLowerCase(Locale.ROOT);
|
||||
if (gravatars && !TextUtils.isEmpty(info.email)) {
|
||||
String gkey = info.email.toLowerCase(Locale.ROOT);
|
||||
boolean lookup;
|
||||
synchronized (emailGravatar) {
|
||||
Avatar avatar = emailGravatar.get(gkey);
|
||||
|
@ -245,14 +246,14 @@ public class ContactInfo {
|
|||
boolean identicon = false;
|
||||
if (info.bitmap == null) {
|
||||
int dp = Helper.dp2pixels(context, 96);
|
||||
if (generated) {
|
||||
if (generated && !TextUtils.isEmpty(info.email)) {
|
||||
if (identicons) {
|
||||
identicon = true;
|
||||
info.bitmap = ImageHelper.generateIdenticon(
|
||||
address.getAddress(), dp, 5, context);
|
||||
info.email, dp, 5, context);
|
||||
} else
|
||||
info.bitmap = ImageHelper.generateLetterIcon(
|
||||
address.getAddress(), address.getPersonal(), dp, context);
|
||||
info.email, address.getPersonal(), dp, context);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,7 +263,7 @@ public class ContactInfo {
|
|||
if (info.displayName == null)
|
||||
info.displayName = address.getPersonal();
|
||||
|
||||
if (!info.known) {
|
||||
if (!info.known && !TextUtils.isEmpty(info.email)) {
|
||||
DB db = DB.getInstance(context);
|
||||
EntityContact contact = db.contact().getContact(account, EntityContact.TYPE_TO, info.email);
|
||||
info.known = (contact != null);
|
||||
|
@ -320,8 +321,11 @@ public class ContactInfo {
|
|||
|
||||
for (Address from : addresses) {
|
||||
String email = ((InternetAddress) from).getAddress();
|
||||
if (emailLookup.containsKey(email))
|
||||
return emailLookup.get(email).uri;
|
||||
if (!TextUtils.isEmpty(email)) {
|
||||
Lookup lookup = emailLookup.get(email.toLowerCase(Locale.ROOT));
|
||||
if (lookup != null)
|
||||
return lookup.uri;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -336,10 +340,10 @@ public class ContactInfo {
|
|||
InternetAddress address = (InternetAddress) addresses[i];
|
||||
String email = address.getAddress();
|
||||
String personal = address.getPersonal();
|
||||
if (!TextUtils.isEmpty(email) && emailLookup.containsKey(email)) {
|
||||
Lookup lookup = emailLookup.get(email);
|
||||
if (TextUtils.isEmpty(personal) ||
|
||||
(prefer_contact && !personal.equals(lookup.displayName)))
|
||||
if (!TextUtils.isEmpty(email)) {
|
||||
Lookup lookup = emailLookup.get(email.toLowerCase(Locale.ROOT));
|
||||
if (lookup != null &&
|
||||
(TextUtils.isEmpty(personal) || prefer_contact))
|
||||
personal = lookup.displayName;
|
||||
}
|
||||
try {
|
||||
|
@ -378,7 +382,7 @@ public class ContactInfo {
|
|||
Lookup lookup = new Lookup();
|
||||
lookup.uri = ContactsContract.Contacts.getLookupUri(contactId, lookupKey);
|
||||
lookup.displayName = displayName;
|
||||
all.put(email, lookup);
|
||||
all.put(email.toLowerCase(Locale.ROOT), lookup);
|
||||
}
|
||||
} catch (Throwable ex) {
|
||||
Log.e(ex);
|
||||
|
|
Loading…
Reference in a new issue