diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 5f543ec0ed..00459d7c20 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1521,7 +1521,7 @@ public class FragmentCompose extends FragmentBase { if (draft == null || draft.ui_hide) { // New draft if ("edit".equals(action)) - throw new IllegalStateException("Draft not found hide=" + (draft != null)); + throw new IllegalArgumentException("Draft not found hide=" + (draft != null)); List identities = db.identity().getComposableIdentities(null); @@ -1741,7 +1741,7 @@ public class FragmentCompose extends FragmentBase { } else { if (!draft.content) { if (draft.uid == null) - throw new IllegalStateException("Draft without uid"); + throw new IllegalArgumentException("Draft without uid"); EntityOperation.queue(context, db, draft, EntityOperation.BODY); } @@ -2118,7 +2118,7 @@ public class FragmentCompose extends FragmentBase { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); if (!prefs.getBoolean("enabled", true)) - throw new IllegalArgumentException(context.getString(R.string.title_sync_disabled)); + throw new IllegalStateException(context.getString(R.string.title_sync_disabled)); // Delete draft (cannot move to outbox) EntityOperation.queue(context, db, draft, EntityOperation.DELETE); @@ -2198,7 +2198,18 @@ public class FragmentCompose extends FragmentBase { finish(); else if (ex instanceof IllegalArgumentException || ex instanceof AddressException) Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); - else + else if (ex instanceof IllegalStateException) { + Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG); + snackbar.setAction(R.string.title_enable, new View.OnClickListener() { + @Override + public void onClick(View v) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + prefs.edit().putBoolean("enabled", true).apply(); + ServiceSynchronize.reload(getContext(), "compose/disabled"); + } + }); + snackbar.show(); + } else Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); } }; diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index fed079b462..6afdfda464 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -493,7 +493,7 @@ public class FragmentMessages extends FragmentBase { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); if (!prefs.getBoolean("enabled", true)) - throw new IllegalArgumentException(context.getString(R.string.title_sync_disabled)); + throw new IllegalStateException(context.getString(R.string.title_sync_disabled)); DB db = DB.getInstance(context); try { @@ -546,7 +546,18 @@ public class FragmentMessages extends FragmentBase { if (ex instanceof IllegalArgumentException) Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show(); - else + else if (ex instanceof IllegalStateException) { + Snackbar snackbar = Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG); + snackbar.setAction(R.string.title_enable, new View.OnClickListener() { + @Override + public void onClick(View v) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + prefs.edit().putBoolean("enabled", true).apply(); + ServiceSynchronize.reload(getContext(), "refresh/disabled"); + } + }); + snackbar.show(); + } else Helper.unexpectedError(getContext(), getViewLifecycleOwner(), ex); } }.execute(FragmentMessages.this, args, "messages:refresh"); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2ad384526e..5103ba7669 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -360,7 +360,6 @@ Showing the original message can leak privacy sensitive information Showing images can leak privacy sensitive information Edit reformatted replied/forwarded message text? - Fix Compose From: @@ -521,6 +520,8 @@ Browse Info Report + Fix + Enable Do not ask this again Adobe Acrobat reader cannot open safely shared files, see the FAQ for more information No message text found