From c3ec3204a3b76b5d86fee74fa3b478d15fe93f40 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 30 Dec 2018 09:55:14 +0000 Subject: [PATCH] Improved quick setup flow --- .../eu/faircode/email/FragmentAccount.java | 6 ++-- .../eu/faircode/email/FragmentIdentity.java | 6 ++-- .../java/eu/faircode/email/FragmentSetup.java | 24 +++++++++---- .../main/java/eu/faircode/email/Provider.java | 6 ++-- app/src/main/res/layout/fragment_setup.xml | 34 +++++++++++++++++-- app/src/main/res/values/strings.xml | 4 ++- 6 files changed, 61 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 0a1078b6ed..ff277920b2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -62,7 +62,7 @@ import com.google.android.material.textfield.TextInputLayout; import com.sun.mail.imap.IMAPFolder; import com.sun.mail.imap.IMAPStore; -import java.io.IOException; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -294,8 +294,8 @@ public class FragmentAccount extends FragmentEx { @Override protected void onException(Bundle args, Throwable ex) { - if (ex instanceof IOException) - Snackbar.make(view, R.string.title_no_settings, Snackbar.LENGTH_LONG).show(); + if (ex instanceof IllegalArgumentException || ex instanceof UnknownHostException) + Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); else Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); } diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index ed4b70018c..5d39ac993c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -58,7 +58,7 @@ import com.android.colorpicker.ColorPickerSwatch; import com.google.android.material.snackbar.Snackbar; import com.google.android.material.textfield.TextInputLayout; -import java.io.IOException; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -387,8 +387,8 @@ public class FragmentIdentity extends FragmentEx { @Override protected void onException(Bundle args, Throwable ex) { - if (ex instanceof IOException) - Snackbar.make(view, R.string.title_no_settings, Snackbar.LENGTH_LONG).show(); + if (ex instanceof IllegalArgumentException || ex instanceof UnknownHostException) + Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); else Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); } diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 3407f3cd42..3b6b036c53 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -90,6 +90,7 @@ import javax.mail.Transport; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.Group; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentTransaction; import androidx.lifecycle.LiveData; @@ -106,6 +107,8 @@ public class FragmentSetup extends FragmentEx { private EditText etEmail; private TextInputLayout tilPassword; private Button btnQuick; + private TextView tvQuickError; + private Group grpQuickError; private TextView tvInstructions; private Button btnAccount; @@ -156,6 +159,8 @@ public class FragmentSetup extends FragmentEx { etEmail = view.findViewById(R.id.etEmail); tilPassword = view.findViewById(R.id.tilPassword); btnQuick = view.findViewById(R.id.btnQuick); + tvQuickError = view.findViewById(R.id.tvQuickError); + grpQuickError = view.findViewById(R.id.grpQuickError); tvInstructions = view.findViewById(R.id.tvInstructions); btnAccount = view.findViewById(R.id.btnAccount); @@ -205,6 +210,8 @@ public class FragmentSetup extends FragmentEx { etEmail.setEnabled(false); tilPassword.setEnabled(false); btnQuick.setEnabled(false); + grpQuickError.setVisibility(View.GONE); + tvInstructions.setVisibility(View.GONE); } @Override @@ -385,7 +392,11 @@ public class FragmentSetup extends FragmentEx { @Override protected void onLoaded(Bundle args, Void data) { - finish(); + new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner()) + .setMessage(R.string.title_setup_quick_success) + .setPositiveButton(android.R.string.ok, null) + .create() + .show(); } @Override @@ -397,12 +408,10 @@ public class FragmentSetup extends FragmentEx { if (ex instanceof IllegalArgumentException) Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); - else - new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner()) - .setMessage(Helper.formatThrowable(ex)) - .setPositiveButton(android.R.string.cancel, null) - .create() - .show(); + else { + tvQuickError.setText(Helper.formatThrowable(ex)); + grpQuickError.setVisibility(View.VISIBLE); + } } }.load(FragmentSetup.this, args); } @@ -524,6 +533,7 @@ public class FragmentSetup extends FragmentEx { // Initialize ibHelp.setVisibility(View.GONE); + grpQuickError.setVisibility(View.GONE); tvInstructions.setVisibility(View.GONE); tvInstructions.setMovementMethod(LinkMovementMethod.getInstance()); diff --git a/app/src/main/java/eu/faircode/email/Provider.java b/app/src/main/java/eu/faircode/email/Provider.java index c00d04fe9f..e80da30ca2 100644 --- a/app/src/main/java/eu/faircode/email/Provider.java +++ b/app/src/main/java/eu/faircode/email/Provider.java @@ -136,7 +136,7 @@ public class Provider { return Provider.fromDNS(domain); } catch (UnknownHostException ex1) { Log.w(ex1); - throw new IllegalArgumentException(context.getString(R.string.title_no_settings)); + throw new UnknownHostException(context.getString(R.string.title_setup_no_settings, domain)); } } } @@ -335,8 +335,8 @@ public class Provider { private static SRVRecord lookup(String dns) throws TextParseException, UnknownHostException { Lookup lookup = new Lookup(dns, Type.SRV); - // https://dns.watch/ - SimpleResolver resolver = new SimpleResolver("84.200.69.80"); + // https://dns.watch/ 84.200.69.80 + SimpleResolver resolver = new SimpleResolver("8.8.8.8"); lookup.setResolver(resolver); Log.i("Lookup dns=" + dns + " @" + resolver.getAddress()); Record[] records = lookup.run(); diff --git a/app/src/main/res/layout/fragment_setup.xml b/app/src/main/res/layout/fragment_setup.xml index ce316aa4e2..859f47df40 100644 --- a/app/src/main/res/layout/fragment_setup.xml +++ b/app/src/main/res/layout/fragment_setup.xml @@ -12,7 +12,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - + + + + + app:layout_constraintTop_toBottomOf="@id/tvQuickFailed" /> + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b7e0f2ef30..54217dd91c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -87,6 +87,9 @@ Settings imported Quick config Quick config can be used for most major providers + No settings found for \'%1$s\' + An account and an identity have been added. You can review the details below using the \'manage\' buttons. + You can try to configure an account and an identity below Manage accounts To receive email Manage identities @@ -166,7 +169,6 @@ Separate notifications Domain name Get settings - Settings not found IMAP SMTP Provider