From 4d7c3e9c887f03ea18c573908fe5b2e11ef521f1 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 27 Aug 2018 15:08:23 +0000 Subject: [PATCH] Improvements, fixes --- .idea/misc.xml | 2 +- .../eu/faircode/email/FragmentAccount.java | 27 +++++++++++++++---- .../eu/faircode/email/FragmentIdentity.java | 25 ++++++++++++++--- .../java/eu/faircode/email/MessageHelper.java | 2 ++ 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index caad359b68..77d4700467 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -30,7 +30,7 @@ - + diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 20fd54c3f0..2ce513fdf4 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -163,9 +163,6 @@ public class FragmentAccount extends FragmentEx { Provider provider = (Provider) adapterView.getSelectedItem(); - tvLink.setText(Html.fromHtml("" + provider.link + "")); - grpInstructions.setVisibility(provider.link == null ? View.GONE : View.VISIBLE); - if (provider.imap_port > 0) { etName.setText(provider.name); etHost.setText(provider.imap_host); @@ -183,6 +180,9 @@ public class FragmentAccount extends FragmentEx { } } else btnAuthorize.setVisibility(View.VISIBLE); + + tvLink.setText(Html.fromHtml("" + provider.link + "")); + grpInstructions.setVisibility(provider.link == null ? View.GONE : View.VISIBLE); } @Override @@ -254,7 +254,6 @@ public class FragmentAccount extends FragmentEx { // Check IMAP server / get folders List folders = new ArrayList<>(); Properties props = MessageHelper.getSessionProperties(auth_type); - Session isession = Session.getInstance(props, null); isession.setDebug(true); IMAPStore istore = null; @@ -476,6 +475,7 @@ public class FragmentAccount extends FragmentEx { // Check IMAP server if (synchronize) { Session isession = Session.getInstance(MessageHelper.getSessionProperties(auth_type), null); + isession.setDebug(true); IMAPStore istore = null; try { istore = (IMAPStore) isession.getStore("imaps"); @@ -683,20 +683,37 @@ public class FragmentAccount extends FragmentEx { return; once = true; + spProvider.setTag(0); + spProvider.setSelection(0); + if (account != null) { + for (int pos = 1; pos < providers.size(); pos++) + if (providers.get(pos).imap_host.equals(account.host)) { + spProvider.setTag(pos); + spProvider.setSelection(pos); + break; + } + } + etName.setText(account == null ? null : account.name); + etHost.setText(account == null ? null : account.host); etPort.setText(account == null ? null : Long.toString(account.port)); + etUser.setText(account == null ? null : account.user); tilPassword.getEditText().setText(account == null ? null : account.password); + auth_type = (account == null ? Helper.AUTH_TYPE_PASSWORD : account.auth_type); + cbSynchronize.setChecked(account == null ? true : account.synchronize); cbPrimary.setChecked(account == null ? true : account.primary); etInterval.setText(account == null ? "9" : Integer.toString(account.poll_interval)); } else { int provider = savedInstanceState.getInt("provider"); - auth_type = savedInstanceState.getInt("auth_type"); spProvider.setTag(provider); spProvider.setSelection(provider); + tilPassword.getEditText().setText(savedInstanceState.getString("password")); + auth_type = savedInstanceState.getInt("auth_type"); + grpInstructions.setVisibility(savedInstanceState.getInt("instructions")); } diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 1f87de2717..ae219e7b28 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -177,14 +177,14 @@ public class FragmentIdentity extends FragmentEx { Provider provider = (Provider) adapterView.getSelectedItem(); - tvLink.setText(Html.fromHtml("" + provider.link + "")); - grpInstructions.setVisibility(provider.link == null ? View.GONE : View.VISIBLE); - - if (provider.smtp_port != 0) { + if (provider.smtp_port > 0) { etHost.setText(provider.smtp_host); etPort.setText(Integer.toString(provider.smtp_port)); cbStartTls.setChecked(provider.starttls); } + + tvLink.setText(Html.fromHtml("" + provider.link + "")); + grpInstructions.setVisibility(provider.link == null ? View.GONE : View.VISIBLE); } @Override @@ -271,6 +271,7 @@ public class FragmentIdentity extends FragmentEx { if (synchronize) { Properties props = MessageHelper.getSessionProperties(auth_type); Session isession = Session.getInstance(props, null); + isession.setDebug(true); Transport itransport = isession.getTransport(starttls ? "smtp" : "smtps"); try { itransport.connect(host, Integer.parseInt(port), user, password); @@ -470,9 +471,25 @@ public class FragmentIdentity extends FragmentEx { spProvider.setAdapter(adapterProfile); if (savedInstanceState == null) { + spProvider.setTag(0); + spProvider.setSelection(0); + if (identity != null) + for (int pos = 1; pos < providers.size(); pos++) + if (providers.get(pos).smtp_host.equals(identity.host)) { + spProvider.setTag(pos); + spProvider.setSelection(pos); + break; + } + + spAccount.setTag(0); + spAccount.setSelection(0); for (int pos = 0; pos < accounts.size(); pos++) if (accounts.get(pos).id == (identity == null ? -1 : identity.account)) { + spAccount.setTag(pos); spAccount.setSelection(pos); + // OAuth token could be updated + if (accounts.get(pos).auth_type != Helper.AUTH_TYPE_PASSWORD) + tilPassword.getEditText().setText(accounts.get(pos).password); break; } } else { diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 377f67100a..c6ccd56fae 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -98,9 +98,11 @@ public class MessageHelper { props.put("mail.mime.decodetext.strict", "false"); // https://javaee.github.io/javamail/OAuth2 + Log.i(Helper.TAG, "Auth type=" + auth_type); if (auth_type == Helper.AUTH_TYPE_GMAIL) { props.put("mail.imaps.auth.mechanisms", "XOAUTH2"); props.put("mail.smtps.auth.mechanisms", "XOAUTH2"); + props.put("mail.smtp.auth.mechanisms", "XOAUTH2"); } return props;