Browse Source

Unexpected error handling

main
M66B 6 years ago
parent
commit
1cc3d79ce9
15 changed files with 44 additions and 43 deletions
  1. +1
    -2
      app/src/main/java/eu/faircode/email/ActivityBilling.java
  2. +4
    -4
      app/src/main/java/eu/faircode/email/ActivityView.java
  3. +1
    -2
      app/src/main/java/eu/faircode/email/AdapterFolder.java
  4. +1
    -2
      app/src/main/java/eu/faircode/email/AdapterMessage.java
  5. +1
    -2
      app/src/main/java/eu/faircode/email/FragmentAbout.java
  6. +4
    -5
      app/src/main/java/eu/faircode/email/FragmentAccount.java
  7. +2
    -3
      app/src/main/java/eu/faircode/email/FragmentAnswer.java
  8. +4
    -4
      app/src/main/java/eu/faircode/email/FragmentCompose.java
  9. +2
    -3
      app/src/main/java/eu/faircode/email/FragmentFolder.java
  10. +2
    -3
      app/src/main/java/eu/faircode/email/FragmentIdentity.java
  11. +5
    -5
      app/src/main/java/eu/faircode/email/FragmentMessage.java
  12. +3
    -4
      app/src/main/java/eu/faircode/email/FragmentMessages.java
  13. +3
    -4
      app/src/main/java/eu/faircode/email/FragmentSetup.java
  14. +10
    -0
      app/src/main/java/eu/faircode/email/Helper.java
  15. +1
    -0
      app/src/main/res/values/strings.xml

+ 1
- 2
app/src/main/java/eu/faircode/email/ActivityBilling.java View File

@ -12,7 +12,6 @@ import android.preference.PreferenceManager;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.Toast;
import com.android.billingclient.api.BillingClient; import com.android.billingclient.api.BillingClient;
import com.android.billingclient.api.BillingClientStateListener; import com.android.billingclient.api.BillingClientStateListener;
@ -144,7 +143,7 @@ abstract class ActivityBilling extends ActivityBase implements PurchasesUpdatedL
setIntent(intent); setIntent(intent);
} catch (NoSuchAlgorithmException ex) { } catch (NoSuchAlgorithmException ex) {
Log.e(Helper.TAG, Log.getStackTraceString(ex)); Log.e(Helper.TAG, Log.getStackTraceString(ex));
Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(this, ex);
} }
} }


+ 4
- 4
app/src/main/java/eu/faircode/email/ActivityView.java View File

@ -466,7 +466,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(ActivityView.this, ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(ActivityView.this, ex);
} }
}.load(this, args); }.load(this, args);
} }
@ -553,7 +553,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
if (BuildConfig.DEBUG) if (BuildConfig.DEBUG)
Toast.makeText(ActivityView.this, ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(ActivityView.this, ex);
} }
}.load(this, new Bundle()); }.load(this, new Bundle());
} }
@ -783,7 +783,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(ActivityView.this, ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(ActivityView.this, ex);
} }
}.load(ActivityView.this, intent.getExtras()); }.load(ActivityView.this, intent.getExtras());
} }
@ -874,7 +874,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
Toast.makeText(ActivityView.this, ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(ActivityView.this, ex);
} }
}.load(this, args); }.load(this, args);
} }


+ 1
- 2
app/src/main/java/eu/faircode/email/AdapterFolder.java View File

@ -31,7 +31,6 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import java.text.Collator; import java.text.Collator;
import java.util.ArrayList; import java.util.ArrayList;
@ -204,7 +203,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
@Override @Override
public void onException(Bundle args, Throwable ex) { public void onException(Bundle args, Throwable ex) {
Toast.makeText(context, ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(context, ex);
} }
}.load(context, owner, args); }.load(context, owner, args);


+ 1
- 2
app/src/main/java/eu/faircode/email/AdapterMessage.java View File

@ -44,7 +44,6 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import java.io.InputStream; import java.io.InputStream;
import java.text.DateFormat; import java.text.DateFormat;
@ -328,7 +327,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
@Override @Override
public void onException(Bundle args, Throwable ex) { public void onException(Bundle args, Throwable ex) {
Toast.makeText(context, ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(context, ex);
} }
}.load(context, owner, args); }.load(context, owner, args);


+ 1
- 2
app/src/main/java/eu/faircode/email/FragmentAbout.java View File

@ -29,7 +29,6 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.io.BufferedReader; import java.io.BufferedReader;
@ -242,7 +241,7 @@ public class FragmentAbout extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
btnDebugInfo.setEnabled(true); btnDebugInfo.setEnabled(true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentAbout.this, new Bundle()); }.load(FragmentAbout.this, new Bundle());
} }


+ 4
- 5
app/src/main/java/eu/faircode/email/FragmentAccount.java View File

@ -54,7 +54,6 @@ import android.widget.ImageView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.Toast;
import com.android.colorpicker.ColorPickerDialog; import com.android.colorpicker.ColorPickerDialog;
import com.android.colorpicker.ColorPickerSwatch; import com.android.colorpicker.ColorPickerSwatch;
@ -492,7 +491,7 @@ public class FragmentAccount extends FragmentEx {
new AlertDialog.Builder(getContext()) new AlertDialog.Builder(getContext())
.setMessage(Helper.formatThrowable(ex)) .setMessage(Helper.formatThrowable(ex))
.setPositiveButton(android.R.string.ok, null)
.setPositiveButton(android.R.string.cancel, null)
.create() .create()
.show(); .show();
} }
@ -697,7 +696,7 @@ public class FragmentAccount extends FragmentEx {
new AlertDialog.Builder(getContext()) new AlertDialog.Builder(getContext())
.setMessage(Helper.formatThrowable(ex)) .setMessage(Helper.formatThrowable(ex))
.setPositiveButton(android.R.string.ok, null)
.setPositiveButton(android.R.string.cancel, null)
.create() .create()
.show(); .show();
} }
@ -738,7 +737,7 @@ public class FragmentAccount extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentAccount.this, args); }.load(FragmentAccount.this, args);
} }
@ -936,7 +935,7 @@ public class FragmentAccount extends FragmentEx {
tilPassword.getEditText().setText(token); tilPassword.getEditText().setText(token);
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} finally { } finally {
snackbar.dismiss(); snackbar.dismiss();
} }


+ 2
- 3
app/src/main/java/eu/faircode/email/FragmentAnswer.java View File

@ -28,7 +28,6 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.Toast;
import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.bottomnavigation.BottomNavigationView;
@ -130,7 +129,7 @@ public class FragmentAnswer extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Helper.setViewsEnabled(view, true); Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(this, args); }.load(this, args);
} }
@ -174,7 +173,7 @@ public class FragmentAnswer extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Helper.setViewsEnabled(view, true); Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(this, args); }.load(this, args);
} }


+ 4
- 4
app/src/main/java/eu/faircode/email/FragmentCompose.java View File

@ -541,7 +541,7 @@ public class FragmentCompose extends FragmentEx {
} }
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex)); Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} finally { } finally {
if (cursor != null) if (cursor != null)
cursor.close(); cursor.close();
@ -586,7 +586,7 @@ public class FragmentCompose extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(this, args); }.load(this, args);
} }
@ -1058,7 +1058,7 @@ public class FragmentCompose extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}; };
@ -1209,7 +1209,7 @@ public class FragmentCompose extends FragmentEx {
if (ex instanceof IllegalArgumentException) if (ex instanceof IllegalArgumentException)
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
else else
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}; };


+ 2
- 3
app/src/main/java/eu/faircode/email/FragmentFolder.java View File

@ -32,7 +32,6 @@ import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.Toast;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
import com.sun.mail.imap.IMAPFolder; import com.sun.mail.imap.IMAPFolder;
@ -193,7 +192,7 @@ public class FragmentFolder extends FragmentEx {
if (ex instanceof IllegalArgumentException) if (ex instanceof IllegalArgumentException)
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
else else
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentFolder.this, args); }.load(FragmentFolder.this, args);
} }
@ -266,7 +265,7 @@ public class FragmentFolder extends FragmentEx {
if (ex instanceof IllegalArgumentException) if (ex instanceof IllegalArgumentException)
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
else else
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentFolder.this, args); }.load(FragmentFolder.this, args);
} }


+ 2
- 3
app/src/main/java/eu/faircode/email/FragmentIdentity.java View File

@ -35,7 +35,6 @@ import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.Toast;
import com.google.android.material.textfield.TextInputLayout; import com.google.android.material.textfield.TextInputLayout;
@ -340,7 +339,7 @@ public class FragmentIdentity extends FragmentEx {
new AlertDialog.Builder(getContext()) new AlertDialog.Builder(getContext())
.setMessage(Helper.formatThrowable(ex)) .setMessage(Helper.formatThrowable(ex))
.setPositiveButton(android.R.string.ok, null)
.setPositiveButton(android.R.string.cancel, null)
.create() .create()
.show(); .show();
} }
@ -379,7 +378,7 @@ public class FragmentIdentity extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentIdentity.this, args); }.load(FragmentIdentity.this, args);
} }


+ 5
- 5
app/src/main/java/eu/faircode/email/FragmentMessage.java View File

@ -852,7 +852,7 @@ public class FragmentMessage extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Helper.setViewsEnabled(view, true); Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentMessage.this, args); }.load(FragmentMessage.this, args);
} }
@ -910,7 +910,7 @@ public class FragmentMessage extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Helper.setViewsEnabled(view, true); Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentMessage.this, args); }.load(FragmentMessage.this, args);
} }
@ -955,7 +955,7 @@ public class FragmentMessage extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Helper.setViewsEnabled(view, true); Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentMessage.this, args); }.load(FragmentMessage.this, args);
} }
@ -1068,7 +1068,7 @@ public class FragmentMessage extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Helper.setViewsEnabled(view, true); Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentMessage.this, args); }.load(FragmentMessage.this, args);
@ -1121,7 +1121,7 @@ public class FragmentMessage extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Helper.setViewsEnabled(view, true); Helper.setViewsEnabled(view, true);
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentMessage.this, args); }.load(FragmentMessage.this, args);
} }


+ 3
- 4
app/src/main/java/eu/faircode/email/FragmentMessages.java View File

@ -38,7 +38,6 @@ import android.view.ViewGroup;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
@ -363,7 +362,7 @@ public class FragmentMessages extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(FragmentMessages.this, args); }.load(FragmentMessages.this, args);
} }
@ -495,7 +494,7 @@ public class FragmentMessages extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(this, args); }.load(this, args);
} }
@ -680,7 +679,7 @@ public class FragmentMessages extends FragmentEx {
@Override @Override
public void onError(Context context, Throwable ex) { public void onError(Context context, Throwable ex) {
Toast.makeText(context, ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(context, ex);
} }
}); });


+ 3
- 4
app/src/main/java/eu/faircode/email/FragmentSetup.java View File

@ -46,7 +46,6 @@ import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton; import android.widget.ToggleButton;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
@ -273,7 +272,7 @@ public class FragmentSetup extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(this, new Bundle()); }.load(this, new Bundle());
@ -480,7 +479,7 @@ public class FragmentSetup extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(this, args); }.load(this, args);
} }
@ -590,7 +589,7 @@ public class FragmentSetup extends FragmentEx {
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Toast.makeText(getContext(), ex.toString(), Toast.LENGTH_LONG).show();
Helper.unexpectedError(getContext(), ex);
} }
}.load(this, args); }.load(this, args);
} }


+ 10
- 0
app/src/main/java/eu/faircode/email/Helper.java View File

@ -52,6 +52,8 @@ import javax.mail.Address;
import javax.mail.FolderClosedException; import javax.mail.FolderClosedException;
import javax.mail.internet.InternetAddress; import javax.mail.internet.InternetAddress;
import androidx.appcompat.app.AlertDialog;
import static android.os.Process.THREAD_PRIORITY_BACKGROUND; import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
public class Helper { public class Helper {
@ -122,6 +124,14 @@ public class Helper {
return sb.toString(); return sb.toString();
} }
static void unexpectedError(Context context, Throwable ex) {
new AlertDialog.Builder(context)
.setTitle(R.string.title_unexpected_error)
.setMessage(ex.toString())
.setPositiveButton(android.R.string.cancel, null)
.show();
}
static String humanReadableByteCount(long bytes, boolean si) { static String humanReadableByteCount(long bytes, boolean si) {
int unit = si ? 1000 : 1024; int unit = si ? 1000 : 1024;
if (bytes < unit) return bytes + " B"; if (bytes < unit) return bytes + " B";


+ 1
- 0
app/src/main/res/values/strings.xml View File

@ -253,6 +253,7 @@
<string name="title_pro_invalid">Invalid response</string> <string name="title_pro_invalid">Invalid response</string>
<string name="title_pro_support">FairEmail needs your help. Tap to purchase pro features to keep the project going.</string> <string name="title_pro_support">FairEmail needs your help. Tap to purchase pro features to keep the project going.</string>
<string name="title_unexpected_error">Unexpected error</string>
<string name="title_log">Log</string> <string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string> <string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string> <string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>


Loading…
Cancel
Save