diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index f7c35cd349..7e180f1779 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -1192,8 +1192,8 @@ public class HtmlHelper { append(((TextNode) node).text()); else { String name = node.nodeName(); - if ("li".equals(name)) - append("*"); + if ("li".equals(name) && node.parent() != null) + append("ol".equals(node.parent().nodeName()) ? "-" : "*"); else if ("blockquote".equals(name)) qlevel++; else if ("pre".equals(name)) @@ -1259,6 +1259,46 @@ public class HtmlHelper { return sb.toString(); } + static void convertLists(Document document) { + for (Element p : document.select("p")) { + Element list = null; + for (int i = 0; i < p.childNodeSize(); i++) { + boolean item = false; + Node node = p.childNode(i); + if (node instanceof TextNode) { + String text = ((TextNode) node).text().trim(); + Node next = node.nextSibling(); + if ((text.startsWith("* ") || text.startsWith("- ")) && + (next == null || "br".equals(next.nodeName()))) { + item = true; + String type = (text.startsWith("* ") ? "ul" : "ol"); + + Element li = document.createElement("li"); + li.text(text.substring(2)); + + if (list == null || !list.tagName().equals(type)) { + list = document.createElement(type); + list.appendChild(li); + node.replaceWith(list); + } else { + list.appendChild(li); + node.remove(); + i--; + } + + if (next != null) + next.remove(); + } + } + if (!item) + list = null; + } + + p.tagName("div"); + p.appendElement("br"); + } + } + static Spanned highlightHeaders(Context context, String headers) { int colorAccent = Helper.resolveColor(context, R.attr.colorAccent); SpannableStringBuilder ssb = new SpannableStringBuilder(headers); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 644d36d01a..4759c5c61c 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -36,6 +36,7 @@ import com.sun.mail.util.QDecoderStream; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; @@ -513,7 +514,20 @@ public class MessageHelper { // When sending message if (identity != null) { - document.select("div[fairemail=signature],div[fairemail=reference]").removeAttr("fairemail"); + Elements sig = document.select("div[fairemail=signature]"); + Elements ref = document.select("div[fairemail=reference]"); + sig.remove(); + ref.remove(); + + HtmlHelper.convertLists(document); + + sig.removeAttr("fairemail"); + ref.removeAttr("fairemail"); + + for (Element e : sig) + document.body().appendChild(e); + for (Element e : ref) + document.body().appendChild(e); DB db = DB.getInstance(context); try {