diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index b3ffe6543e..1acbc7be84 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -5109,6 +5109,10 @@ public class AdapterMessage extends RecyclerView.Adapter() { + @Override + protected Void onExecute(Context context, Bundle args) { + long id = args.getLong("id"); + + DB db = DB.getInstance(context); + try { + db.beginTransaction(); + + EntityMessage message = db.message().getMessage(id); + if (message == null) + return null; + + EntityOperation.queue(context, message, EntityOperation.BODY, !message.plain_only); + + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + + return null; + } + + @Override + protected void onExecuted(Bundle args, Void data) { + ToastEx.makeText(context, R.string.title_fetching_again, Toast.LENGTH_LONG).show(); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(parentFragment.getParentFragmentManager(), ex); + } + }.execute(context, owner, args, "message:resync"); + } + private void onMenuNotes(TupleMessageEx message) { Bundle args = new Bundle(); args.putLong("id", message.id); diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 908480c56e..cb9cc5ea39 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1932,10 +1932,13 @@ class Core { } private static void onBody(Context context, JSONArray jargs, EntityFolder folder, EntityMessage message, IMAPFolder ifolder) throws MessagingException, IOException { + boolean plain_text = jargs.optBoolean(0); + // Download message body DB db = DB.getInstance(context); - if (message.content) + if (message.content && + Objects.equals(message.plain_only, plain_text)) return; // Get message @@ -1945,7 +1948,7 @@ class Core { MessageHelper helper = new MessageHelper((MimeMessage) imessage, context); MessageHelper.MessageParts parts = helper.getMessageParts(); - String body = parts.getHtml(context); + String body = parts.getHtml(context, plain_text); File file = message.getFile(context); Helper.writeText(file, body); String text = HtmlHelper.getFullText(body); @@ -1954,7 +1957,7 @@ class Core { db.message().setMessageContent(message.id, true, message.language, - parts.isPlainOnly(), + plain_text || parts.isPlainOnly(), message.preview, parts.getWarnings(message.warning)); MessageClassifier.classify(message, folder, null, context); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index bb24c89858..8e75931d2d 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -2842,6 +2842,10 @@ public class MessageHelper { } String getHtml(Context context) throws MessagingException, IOException { + return getHtml(context, false); + } + + String getHtml(Context context, boolean plain_text) throws MessagingException, IOException { if (text.size() == 0) { Log.i("No body part"); return null; @@ -2856,8 +2860,13 @@ public class MessageHelper { parts.addAll(text); else for (PartHolder h : text) - if (h.isHtml()) - parts.add(h); + if (plain_text) { + if (h.isPlainText()) + parts.add(h); + } else { + if (h.isHtml()) + parts.add(h); + } parts.addAll(extra); diff --git a/app/src/main/res/drawable/twotone_sync_alt_24.xml b/app/src/main/res/drawable/twotone_sync_alt_24.xml new file mode 100644 index 0000000000..360b6a2420 --- /dev/null +++ b/app/src/main/res/drawable/twotone_sync_alt_24.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/menu/popup_message_more.xml b/app/src/main/res/menu/popup_message_more.xml index 4981536505..d82eb7f8c9 100644 --- a/app/src/main/res/menu/popup_message_more.xml +++ b/app/src/main/res/menu/popup_message_more.xml @@ -155,6 +155,11 @@ android:icon="@drawable/twotone_sync_24" android:title="@string/title_resync" /> + + Encrypt Decrypt Resync + Alternative OpenKeychain not found Transferring to OpenKeychain Verify the signature to show the message text