diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 5150edf43d..98c76be87c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1233,15 +1233,8 @@ public class FragmentCompose extends FragmentBase { p.html(TextUtils.join("
", line)); document.body().appendChild(p); return document.html(); - } else { - Document d = HtmlHelper.sanitizeCompose(context, ref.outerHtml(), true); - Element b = d.body(); - b.tagName("div"); - document.body().appendChild(b); - - Spanned spanned = HtmlHelper.fromDocument(context, document, null, null); - return HtmlHelper.toHtml(spanned, context); - } + } else + return ref.html(); // Edit-ref } @Override @@ -4167,12 +4160,10 @@ public class FragmentCompose extends FragmentBase { String b = args.getString("body", ""); if (!TextUtils.isEmpty(b)) { - Document d = HtmlHelper.sanitizeCompose(context, b, false); - Spanned spanned = HtmlHelper.fromDocument(context, d, null, null); - String shtml = HtmlHelper.toHtml(spanned, context); + Document d = JsoupEx.parse(b); // Passed html Element e = document .createElement("div") - .html(shtml); + .html(d.body().html()); document.body().appendChild(e); } @@ -4334,16 +4325,8 @@ public class FragmentCompose extends FragmentBase { data.draft.cc = ref.cc; data.draft.bcc = ref.bcc; data.draft.subject = ref.subject; - if (ref.content) { - String html = Helper.readText(ref.getFile(context)); - Document d = HtmlHelper.sanitizeCompose(context, html, true); - Spanned spanned = HtmlHelper.fromDocument(context, d, null, null); - String shtml = HtmlHelper.toHtml(spanned, context); - Element e = document - .createElement("div") - .html(shtml); - document.body().appendChild(e); - } + if (ref.content) // Edit-as-new + document = JsoupEx.parse(ref.getFile(context)); } else if ("list".equals(action)) { data.draft.subject = ref.subject; } else if ("dsn".equals(action)) { @@ -4442,8 +4425,7 @@ public class FragmentCompose extends FragmentBase { // Get referenced message body d = JsoupEx.parse(ref.getFile(context)); HtmlHelper.normalizeNamespaces(d, false); - for (Element e : d.select("[x-plain=true]")) - e.removeAttr("x-plain"); + HtmlHelper.clearAnnotations(d); // Legacy left-overs if (BuildConfig.DEBUG) d.select(".faircode_remove").remove(); @@ -4515,7 +4497,8 @@ public class FragmentCompose extends FragmentBase { String clazz = element.attr("class"); String style = HtmlHelper.processStyles(tag, clazz, null, sheets); style = HtmlHelper.mergeStyles(style, element.attr("style")); - element.attr("style", style); + if (!TextUtils.isEmpty(style)) + element.attr("style", style); } // Quote referenced message body @@ -4707,22 +4690,21 @@ public class FragmentCompose extends FragmentBase { refFile.delete(); } - // Could be external draft - Document document = HtmlHelper.sanitizeCompose(context, doc.html(), true); + // Possibly external draft for (Element e : ref) if (write_below) - document.body().prependChild(e); + doc.body().prependChild(e); else - document.body().appendChild(e); + doc.body().appendChild(e); EntityIdentity identity = null; if (data.draft.identity != null) identity = db.identity().getIdentity(data.draft.identity); - addSignature(context, document, data.draft, identity); + addSignature(context, doc, data.draft, identity); - String html = document.html(); + String html = doc.html(); Helper.writeText(file, html); Helper.writeText(data.draft.getFile(context, data.draft.revision), html); @@ -5209,8 +5191,7 @@ public class FragmentCompose extends FragmentBase { if (!dirty) if (loaded == null) { - Document b = HtmlHelper.sanitizeCompose(context, body, true); - HtmlHelper.clearAnnotations(b); + Document b = JsoupEx.parse(body); // Is-dirty if (!Objects.equals(b.body().html(), doc.body().html())) dirty = true; } else { @@ -5248,7 +5229,7 @@ public class FragmentCompose extends FragmentBase { d = JsoupEx.parse(extras.getString("html")); } else { - d = HtmlHelper.sanitizeCompose(context, body, true); + d = JsoupEx.parse(body); // Save for (Element e : ref) if (write_below) @@ -5259,7 +5240,6 @@ public class FragmentCompose extends FragmentBase { addSignature(context, d, draft, identity); } - HtmlHelper.clearAnnotations(d); body = d.html(); // Create new revision @@ -5917,6 +5897,10 @@ public class FragmentCompose extends FragmentBase { Elements ref = doc.select("div[fairemail=reference]"); ref.remove(); + HtmlHelper.clearAnnotations(doc); // Legacy left-overs + + doc = HtmlHelper.sanitizeCompose(context, doc.html(), true); + Spanned spannedBody = HtmlHelper.fromDocument(context, doc, new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 8c8cdc5d79..8a0af3ede6 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -3032,7 +3032,8 @@ public class HtmlHelper { .removeAttr("x-dashed") .removeAttr("x-tracking") .removeAttr("x-border") - .removeAttr("x-list-style"); + .removeAttr("x-list-style") + .removeAttr("x-plain"); } static Spanned fromHtml(@NonNull String html, Context context) {