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