diff --git a/app/src/main/java/eu/faircode/email/AdapterAttachment.java b/app/src/main/java/eu/faircode/email/AdapterAttachment.java index ad286b5889..951c974146 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAttachment.java +++ b/app/src/main/java/eu/faircode/email/AdapterAttachment.java @@ -20,6 +20,7 @@ package eu.faircode.email; */ import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; @@ -34,6 +35,7 @@ import android.widget.ProgressBar; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; import androidx.core.content.FileProvider; import androidx.fragment.app.Fragment; import androidx.lifecycle.Lifecycle; @@ -293,8 +295,64 @@ public class AdapterAttachment extends RecyclerView.Adapter() { + @Override + protected String onExecute(Context context, Bundle args) throws Throwable { + long id = args.getLong("id"); + + DB db = DB.getInstance(context); + EntityAttachment attachment = db.attachment().getAttachment(id); + if (attachment == null) + return null; + + File file = attachment.getFile(context); + return Helper.readText(file); + } + + @Override + protected void onExecuted(Bundle args, String html) { + if (html == null) + return; + + Bundle hargs = new Bundle(); + hargs.putString("html", html); + hargs.putBoolean("overview_mode", true); + hargs.putBoolean("safe_browsing", true); + hargs.putBoolean("force_light", true); + hargs.putBoolean("javascript", true); + + FragmentDialogOpenFull dialog = new FragmentDialogOpenFull(); + dialog.setArguments(hargs); + dialog.show(parentFragment.getParentFragmentManager(), "amp"); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.unexpectedError(parentFragment.getParentFragmentManager(), ex); + } + }.execute(context, owner, args, "attachment:amp"); } private void onDownload(EntityAttachment attachment) { diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 3c10f40af1..b3ffe6543e 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -3025,6 +3025,7 @@ public class AdapterMessage extends RecyclerView.Adapter a = new ArrayList<>(); for (EntityAttachment attachment : attachments) { boolean inline = (attachment.isEncryption() || + "text/x-amp-html".equals(attachment.type) || (attachment.isInline() && attachment.isImage())); if (inline && attachment.available) has_inline = true; diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogOpenFull.java b/app/src/main/java/eu/faircode/email/FragmentDialogOpenFull.java index 9edeb2defb..6ea1a2dacd 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogOpenFull.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogOpenFull.java @@ -62,6 +62,7 @@ public class FragmentDialogOpenFull extends FragmentDialogBase { boolean overview_mode = args.getBoolean("overview_mode"); boolean safe_browsing = args.getBoolean("safe_browsing"); boolean force_light = args.getBoolean("force_light"); + boolean javascript = args.getBoolean("javascript"); final Context context = getContext(); @@ -89,6 +90,8 @@ public class FragmentDialogOpenFull extends FragmentDialogBase { if (WebViewEx.isFeatureSupported(WebViewFeature.FORCE_DARK)) WebSettingsCompat.setForceDark(settings, dark ? FORCE_DARK_ON : FORCE_DARK_OFF); + settings.setJavaScriptEnabled(javascript); + settings.setLoadsImagesAutomatically(true); settings.setBlockNetworkLoads(false); settings.setBlockNetworkImage(false); diff --git a/app/src/main/res/drawable/twotone_bolt_24.xml b/app/src/main/res/drawable/twotone_bolt_24.xml new file mode 100644 index 0000000000..6c4c194c98 --- /dev/null +++ b/app/src/main/res/drawable/twotone_bolt_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 99105a18d6..0b9c5287c4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1211,6 +1211,7 @@ Always show images on showing original messages Showing images can leak privacy sensitive information Images recognized as tracking images will not be shown + Show AMP variant of the message? Delete local messages? Messages will remain on the remote server. Help improve FairEmail Send error reports?