From 11a1f29ad03d3635767a2aedcca1b71b62286296 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 23 Aug 2019 09:18:31 +0200 Subject: [PATCH] Delete everything after first signature header --- .../eu/faircode/email/FragmentCompose.java | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 715c1a75bf..8373bc8c73 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -114,6 +114,8 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; import org.jsoup.nodes.TextNode; +import org.jsoup.select.NodeTraversor; +import org.jsoup.select.NodeVisitor; import org.openintents.openpgp.OpenPgpError; import org.openintents.openpgp.util.OpenPgpApi; import org.openintents.openpgp.util.OpenPgpServiceConnection; @@ -2235,30 +2237,31 @@ public class FragmentCompose extends FragmentBase { if (usenet) { Document rdoc = Jsoup.parse(refText); - Node signature = null; - for (Element e : rdoc.select("*")) - for (Node node : e.childNodes()) + List tbd = new ArrayList<>(); + + NodeTraversor.traverse(new NodeVisitor() { + boolean found = false; + + public void head(Node node, int depth) { if (node instanceof TextNode && - "--".equals(((TextNode) node).text().trim()) && + "-- ".equals(((TextNode) node).getWholeText()) && node.nextSibling() != null && "br".equals(node.nextSibling().nodeName())) - signature = node; - - if (signature != null) { - List tbd = new ArrayList<>(); - tbd.add(signature); + found = true; + if (found) + tbd.add(node); + } - Node next = signature.nextSibling(); - while (next != null) { - tbd.add(0, next); - next = next.nextSibling(); + public void tail(Node node, int depth) { + // Do nothing } + }, rdoc); - for (Node n : tbd) - n.remove(); + if (tbd.size() > 0) { + for (Node node : tbd) + node.remove(); - if (rdoc.body() != null) - refText = rdoc.body().html(); + refText = (rdoc.body() == null ? "" : rdoc.body().html()); } }