diff --git a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java index 29a4bcad92..7ee855b7e8 100644 --- a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java @@ -247,12 +247,13 @@ public class FragmentQuickSetup extends FragmentBase { btnManual.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - FragmentBase fragment = new FragmentAccount(); + finish(); + + FragmentAccount fragment = new FragmentAccount(); fragment.setArguments(new Bundle()); FragmentTransaction fragmentTransaction = getParentFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.content_frame, fragment).addToBackStack("account"); fragmentTransaction.commit(); - finish(); } }); @@ -294,10 +295,43 @@ public class FragmentQuickSetup extends FragmentBase { } private void onSave(boolean check) { + String name = etName.getText().toString().trim(); + String email = etEmail.getText().toString().trim(); + String password = tilPassword.getEditText().getText().toString(); + String warning = null; + if (TextUtils.isEmpty(name)) + warning = getString(R.string.title_no_name); + else if (TextUtils.isEmpty(email)) + warning = getString(R.string.title_no_email); + else if (!Helper.EMAIL_ADDRESS.matcher(email).matches()) + warning = getString(R.string.title_email_invalid, email); + else if (TextUtils.isEmpty(password)) + warning = getString(R.string.title_no_password); + else { + ConnectivityManager cm = Helper.getSystemService(getContext(), ConnectivityManager.class); + NetworkInfo ani = (cm == null ? null : cm.getActiveNetworkInfo()); + if (ani == null || !ani.isConnected()) + warning = getString(R.string.title_no_internet); + } + + if (warning != null) { + tvArgument.setText(warning); + tvArgument.setVisibility(View.VISIBLE); + getMainHandler().post(new Runnable() { + @Override + public void run() { + if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + return; + scroll.smoothScrollTo(0, tvArgument.getBottom()); + } + }); + return; + } + Bundle args = new Bundle(); - args.putString("name", etName.getText().toString().trim()); - args.putString("email", etEmail.getText().toString().trim()); - args.putString("password", tilPassword.getEditText().getText().toString()); + args.putString("name", name); + args.putString("email", email); + args.putString("password", password); args.putBoolean("update", cbUpdate.isChecked()); args.putBoolean("check", check); args.putParcelable("best", bestProvider); @@ -340,23 +374,9 @@ public class FragmentQuickSetup extends FragmentBase { boolean check = args.getBoolean("check"); EmailProvider best = args.getParcelable("best"); - if (TextUtils.isEmpty(name)) - throw new ArgumentException(context.getString(R.string.title_no_name)); - if (TextUtils.isEmpty(email)) - throw new ArgumentException(context.getString(R.string.title_no_email)); - if (!Helper.EMAIL_ADDRESS.matcher(email).matches()) - throw new ArgumentException(context.getString(R.string.title_email_invalid, email)); - if (TextUtils.isEmpty(password)) - throw new ArgumentException(context.getString(R.string.title_no_password)); - int at = email.indexOf('@'); String username = email.substring(0, at); - ConnectivityManager cm = Helper.getSystemService(context, ConnectivityManager.class); - NetworkInfo ani = (cm == null ? null : cm.getActiveNetworkInfo()); - if (ani == null || !ani.isConnected()) - throw new ArgumentException(context.getString(R.string.title_no_internet)); - Throwable fail = null; List providers; if (best == null) @@ -695,24 +715,12 @@ public class FragmentQuickSetup extends FragmentBase { etEmail.clearFocus(); Helper.hideKeyboard(view); - if (ex instanceof ArgumentException) { - tvArgument.setText(ex.getMessage()); - tvArgument.setVisibility(View.VISIBLE); - getMainHandler().post(new Runnable() { - @Override - public void run() { - if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) - return; - scroll.smoothScrollTo(0, tvArgument.getBottom()); - } - }); - return; - } - if (ex instanceof AuthenticationFailedException) { String message = getString(R.string.title_setup_no_auth_hint); if (provider != null && provider.appPassword) message += "\n\n" + getString(R.string.title_setup_app_password_hint); + else + btnManual.setVisibility(View.VISIBLE); tvErrorHint.setText(message); } else { tvErrorHint.setText(R.string.title_setup_no_settings_hint); @@ -838,10 +846,4 @@ public class FragmentQuickSetup extends FragmentBase { Log.e(ex); } } - - private static class ArgumentException extends IllegalArgumentException { - public ArgumentException(String text) { - super(text); - } - } } diff --git a/app/src/main/res/layout/fragment_quick_setup.xml b/app/src/main/res/layout/fragment_quick_setup.xml index 18048a76c9..425821f597 100644 --- a/app/src/main/res/layout/fragment_quick_setup.xml +++ b/app/src/main/res/layout/fragment_quick_setup.xml @@ -159,7 +159,7 @@ android:layout_height="wrap_content" android:layout_marginTop="12dp" android:autoLink="web" - android:text="Error message" + android:text="Argument" android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textColor="?attr/colorWarning" android:textIsSelectable="true"