From c40894477300f84b60e7a5e1aba0eb3fc9bd0dc3 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 23 Sep 2019 11:40:01 +0200 Subject: [PATCH] Fixed from/extra --- .../eu/faircode/email/FragmentCompose.java | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index f7ac843457..244f05e483 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -2096,12 +2096,9 @@ public class FragmentCompose extends FragmentBase { data.draft.inreplyto = ref.msgid; data.draft.thread = ref.thread; - EntityIdentity identity = null; - if (ref.identity != null) { - identity = db.identity().getIdentity(ref.identity); - if (identity != null) - data.draft.from = new Address[]{new InternetAddress(identity.email, identity.name)}; - } + EntityIdentity ridentity = null; + if (ref.identity != null) + ridentity = db.identity().getIdentity(ref.identity); if ("list".equals(action) && ref.list_post != null) data.draft.to = ref.list_post; @@ -2109,15 +2106,17 @@ public class FragmentCompose extends FragmentBase { data.draft.to = ref.receipt_to; else { // Prevent replying to self - if (ref.replySelf(identity)) { - data.draft.to = ref.to; + if (ref.replySelf(ridentity)) { data.draft.from = ref.from; - } else + data.draft.to = ref.to; + } else { + data.draft.from = ref.to; data.draft.to = (ref.reply == null || ref.reply.length == 0 ? ref.from : ref.reply); + } } if ("reply_all".equals(action)) - data.draft.cc = ref.getAllRecipients(identity); + data.draft.cc = ref.getAllRecipients(ridentity); else if ("receipt".equals(action)) data.draft.receipt_request = true; @@ -2167,6 +2166,7 @@ public class FragmentCompose extends FragmentBase { data.draft.plain_only = true; // Select identity matching from address + Address from = null; EntityIdentity selected = null; long aid = args.getLong("account", -1); @@ -2175,6 +2175,7 @@ public class FragmentCompose extends FragmentBase { for (EntityIdentity identity : data.identities) if (identity.account.equals(aid) && identity.sameAddress(sender)) { + from = sender; selected = identity; break; } @@ -2184,6 +2185,7 @@ public class FragmentCompose extends FragmentBase { for (EntityIdentity identity : data.identities) if (identity.account.equals(aid) && identity.similarAddress(sender)) { + from = sender; selected = identity; break; } @@ -2192,6 +2194,7 @@ public class FragmentCompose extends FragmentBase { for (Address sender : data.draft.from) for (EntityIdentity identity : data.identities) if (identity.sameAddress(sender)) { + from = sender; selected = identity; break; } @@ -2200,6 +2203,7 @@ public class FragmentCompose extends FragmentBase { for (Address sender : data.draft.from) for (EntityIdentity identity : data.identities) if (identity.similarAddress(sender)) { + from = sender; selected = identity; break; } @@ -2244,9 +2248,9 @@ public class FragmentCompose extends FragmentBase { data.draft.identity = selected.id; data.draft.from = new InternetAddress[]{new InternetAddress(selected.email, selected.name)}; - int at = selected.email.indexOf('@'); - if (at > 0) - data.draft.extra = selected.email.substring(0, at); + String extra = (from == null ? selected.email : ((InternetAddress) from).getAddress()); + if (extra != null && extra.contains("@")) + data.draft.extra = extra.substring(0, extra.indexOf("@")); data.draft.sender = MessageHelper.getSortKey(data.draft.from); Uri lookupUri = ContactInfo.getLookupUri(context, data.draft.from);