Added message error help

pull/162/head
M66B 5 years ago
parent 843391db38
commit c944d893bc

@ -111,7 +111,7 @@ FairEmail follows all the best practices for an email client as decribed in [thi
* [(19) Why are the pro features so expensive?](#user-content-faq19) * [(19) Why are the pro features so expensive?](#user-content-faq19)
* [(20) Can I get a refund?](#user-content-faq20) * [(20) Can I get a refund?](#user-content-faq20)
* [(21) How do I enable the notification light?](#user-content-faq21) * [(21) How do I enable the notification light?](#user-content-faq21)
* [(22) What do 'Couldn't connect to host', 'Connection refused', 'Network unreachable', 'Software caused connection abort', 'BYE Logging out', 'Connection closed/reset by peer', 'Read timed out' and 'Broken pipe' mean?](#user-content-faq22) * [(22) What do 'Couldn't connect to host', 'Connection refused', 'Network unreachable', 'Software caused connection abort', 'BYE Logging out', 'Connection closed/reset by peer', 'Read timed out', 'Broken pipe', 'ParseException' and 'SendFailedException' mean?](#user-content-faq22)
* [(23) Why do I get 'Too many simultaneous connections' or 'Maximum number of connections ... exceeded' ?](#user-content-faq23) * [(23) Why do I get 'Too many simultaneous connections' or 'Maximum number of connections ... exceeded' ?](#user-content-faq23)
* [(24) What is browse messages on the server?](#user-content-faq24) * [(24) What is browse messages on the server?](#user-content-faq24)
* [(25) Why can't I select/open/save an image, attachment or a file?](#user-content-faq25) * [(25) Why can't I select/open/save an image, attachment or a file?](#user-content-faq25)
@ -660,7 +660,7 @@ but such apps cannot be updated anymore and recent Android versions will show a
<br /> <br />
<a name="faq22"></a> <a name="faq22"></a>
**(22) What do 'Couldn't connect to host', 'Connection refused', 'Network unreachable', 'Software caused connection abort', 'BYE Logging out', 'Connection closed/reset by peer', 'Read timed out' and 'Broken pipe' mean?** **(22) What do 'Couldn't connect to host', 'Connection refused', 'Network unreachable', 'Software caused connection abort', 'BYE Logging out', 'Connection closed/reset by peer', 'Read timed out', 'Broken pipe', 'ParseException' and 'SendFailedException' mean?**
FairEmail does not hide errors like similar apps often do, so it is easier to diagnose problems. FairEmail does not hide errors like similar apps often do, so it is easier to diagnose problems.
Also, FairEmail will always retry again later, so transient errors will automatically be solved. Also, FairEmail will always retry again later, so transient errors will automatically be solved.
@ -679,6 +679,12 @@ see [here](https://blogs.technet.microsoft.com/pki/2010/09/30/sha2-and-windows/)
The message *... Read timed out ...* means that the email server is not responding anymore or that the internet connection is bad. The message *... Read timed out ...* means that the email server is not responding anymore or that the internet connection is bad.
The message *... ParseException ...* means that there is a problem with a received message, likely caused by a bug in the sending software.
FairEmail will workaround this is most cases, so this message can mostly be considered as a warning instead of an error.
The message *...SendFailedException...* means that there was a problem with sending a message.
The message will almost always include a reason. Common reasons are that the message is too big or that one or more recipient addresses are invalid.
See [here](https://linux.die.net/man/3/connect) for what error codes like EHOSTUNREACH and ETIMEDOUT mean. See [here](https://linux.die.net/man/3/connect) for what error codes like EHOSTUNREACH and ETIMEDOUT mean.
Possible causes are: Possible causes are:

@ -256,6 +256,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
private ImageView ivThread; private ImageView ivThread;
private TextView tvPreview; private TextView tvPreview;
private TextView tvError; private TextView tvError;
private Button btnHelp;
private ContentLoadingProgressBar pbLoading; private ContentLoadingProgressBar pbLoading;
private View vsBody; private View vsBody;
@ -364,6 +365,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
tvCount = itemView.findViewById(R.id.tvCount); tvCount = itemView.findViewById(R.id.tvCount);
ivThread = itemView.findViewById(R.id.ivThread); ivThread = itemView.findViewById(R.id.ivThread);
tvError = itemView.findViewById(R.id.tvError); tvError = itemView.findViewById(R.id.tvError);
btnHelp = itemView.findViewById(R.id.btnHelp);
pbLoading = itemView.findViewById(R.id.pbLoading); pbLoading = itemView.findViewById(R.id.pbLoading);
} }
@ -498,6 +500,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
ibFlagged.setOnClickListener(this); ibFlagged.setOnClickListener(this);
if (viewType == ViewType.THREAD) if (viewType == ViewType.THREAD)
ibFlagged.setOnLongClickListener(this); ibFlagged.setOnLongClickListener(this);
btnHelp.setOnClickListener(this);
if (vsBody != null) { if (vsBody != null) {
ibExpanderAddress.setOnClickListener(this); ibExpanderAddress.setOnClickListener(this);
@ -547,6 +550,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
ibFlagged.setOnClickListener(null); ibFlagged.setOnClickListener(null);
if (viewType == ViewType.THREAD) if (viewType == ViewType.THREAD)
ibFlagged.setOnLongClickListener(null); ibFlagged.setOnLongClickListener(null);
btnHelp.setOnClickListener(null);
if (vsBody != null) { if (vsBody != null) {
ibExpanderAddress.setOnClickListener(null); ibExpanderAddress.setOnClickListener(null);
@ -593,6 +597,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
ivThread.setVisibility(View.GONE); ivThread.setVisibility(View.GONE);
tvPreview.setVisibility(View.GONE); tvPreview.setVisibility(View.GONE);
tvError.setVisibility(View.GONE); tvError.setVisibility(View.GONE);
btnHelp.setVisibility(View.GONE);
pbLoading.setVisibility(View.VISIBLE); pbLoading.setVisibility(View.VISIBLE);
clearExpanded(null); clearExpanded(null);
@ -787,6 +792,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
} else { } else {
tvError.setText(error); tvError.setText(error);
tvError.setVisibility(error == null ? View.GONE : View.VISIBLE); tvError.setVisibility(error == null ? View.GONE : View.VISIBLE);
btnHelp.setVisibility(error == null ? View.GONE : View.VISIBLE);
} }
// Contact info // Contact info
@ -1478,6 +1484,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
onShowSnoozed(message); onShowSnoozed(message);
else if (view.getId() == R.id.ibFlagged) else if (view.getId() == R.id.ibFlagged)
onToggleFlag(message); onToggleFlag(message);
else if (view.getId() == R.id.btnHelp)
onHelp(message);
else if (view.getId() == R.id.ibSearchContact) else if (view.getId() == R.id.ibSearchContact)
onSearchContact(message); onSearchContact(message);
else if (view.getId() == R.id.ibNotifyContact) else if (view.getId() == R.id.ibNotifyContact)
@ -1745,6 +1753,10 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
}.execute(context, owner, args, "message:flag"); }.execute(context, owner, args, "message:flag");
} }
private void onHelp(TupleMessageEx message) {
Helper.viewFAQ(context, 22);
}
private void onSearchContact(TupleMessageEx message) { private void onSearchContact(TupleMessageEx message) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putLong("id", message.id); args.putLong("id", message.id);

@ -291,6 +291,20 @@
app:layout_constraintStart_toEndOf="@id/paddingStart" app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toBottomOf="@id/tvPreview" /> app:layout_constraintTop_toBottomOf="@id/tvPreview" />
<Button
android:id="@+id/btnHelp"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="?attr/colorAccent"
android:minWidth="0dp"
android:minHeight="0dp"
android:text="@string/title_setup_help"
android:textColor="@android:color/black"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvError" />
<View <View
android:id="@+id/paddingEnd" android:id="@+id/paddingEnd"
android:layout_width="6dp" android:layout_width="6dp"
@ -307,7 +321,7 @@
android:visibility="gone" android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvError" /> app:layout_constraintTop_toBottomOf="@id/btnHelp" />
<eu.faircode.email.ContentLoadingProgressBar <eu.faircode.email.ContentLoadingProgressBar
android:id="@+id/pbLoading" android:id="@+id/pbLoading"

@ -286,6 +286,20 @@
app:layout_constraintStart_toEndOf="@id/paddingStart" app:layout_constraintStart_toEndOf="@id/paddingStart"
app:layout_constraintTop_toBottomOf="@id/tvPreview" /> app:layout_constraintTop_toBottomOf="@id/tvPreview" />
<Button
android:id="@+id/btnHelp"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="?attr/colorAccent"
android:minWidth="0dp"
android:minHeight="0dp"
android:text="@string/title_setup_help"
android:textColor="@android:color/black"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvError" />
<View <View
android:id="@+id/paddingEnd" android:id="@+id/paddingEnd"
android:layout_width="6dp" android:layout_width="6dp"
@ -300,7 +314,7 @@
android:layout_height="3dp" android:layout_height="3dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvError" /> app:layout_constraintTop_toBottomOf="@id/btnHelp" />
<eu.faircode.email.ContentLoadingProgressBar <eu.faircode.email.ContentLoadingProgressBar
android:id="@+id/pbLoading" android:id="@+id/pbLoading"

Loading…
Cancel
Save