From 77ccdd48c3059f6019e8e9ee1c181daca61f6e58 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 15 May 2024 12:40:06 +0200 Subject: [PATCH] Remove quotes --- .../java/eu/faircode/email/EntityRule.java | 2 +- .../email/FragmentDialogSummarize.java | 10 ++++++++-- .../email/FragmentDialogTranslate.java | 10 +++++++--- .../java/eu/faircode/email/HtmlHelper.java | 19 +++++++++++++++++++ 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index b157d11737..b137586bd4 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -425,7 +425,7 @@ public class EntityRule { Document d = JsoupEx.parse(html); if (skip_quotes) - d.select("blockquote").remove(); + HtmlHelper.removeQuotes(d); if (jsoup) { String selector = value.substring(JSOUP_PREFIX.length()); if (d.select(selector).isEmpty() != not) diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogSummarize.java b/app/src/main/java/eu/faircode/email/FragmentDialogSummarize.java index d322fc1dd6..550a527f29 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogSummarize.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogSummarize.java @@ -103,9 +103,15 @@ public class FragmentDialogSummarize extends FragmentDialogBase { return null; Document d = JsoupEx.parse(file); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean remove_signatures = prefs.getBoolean("remove_signatures", false); + if (remove_signatures) + HtmlHelper.removeSignatures(d); + + HtmlHelper.removeQuotes(d); + d = HtmlHelper.sanitizeView(context, d, false); - HtmlHelper.removeSignatures(d); - d.select("blockquote").remove(); if (OpenAI.isAvailable(context)) { String model = prefs.getString("openai_model", OpenAI.DEFAULT_MODEL); diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogTranslate.java b/app/src/main/java/eu/faircode/email/FragmentDialogTranslate.java index 2bb8aa57a4..2504a4d4f0 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogTranslate.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogTranslate.java @@ -349,15 +349,19 @@ public class FragmentDialogTranslate extends FragmentDialogBase { EntityMessage message = db.message().getMessage(id); File file = EntityMessage.getFile(context, id); - String html = Helper.readText(file); - Document d = HtmlHelper.sanitizeCompose(context, html, false); + if (!file.exists()) + return null; + + Document d = JsoupEx.parse(file); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean remove_signatures = prefs.getBoolean("remove_signatures", false); if (remove_signatures) HtmlHelper.removeSignatures(d); - d.select("blockquote").remove(); + HtmlHelper.removeQuotes(d); + + d = HtmlHelper.sanitizeView(context, d, false); HtmlHelper.truncate(d, HtmlHelper.MAX_TRANSLATABLE_TEXT_SIZE); diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 0be8c8972c..18141188e1 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -2859,6 +2859,25 @@ public class HtmlHelper { }); } + static void removeQuotes(Document d) { + // Gmail + Elements quotes = d.body().select(".gmail_quote"); + if (quotes.size() > 0) { + quotes.remove(); + return; + } + + // Outlook:
+ quotes = d.body().select("div#appendonsend"); + if (quotes.size() > 0) { + quotes.nextAll().remove(); + quotes.remove(); + return; + } + + d.select("blockquote").remove(); + } + static String truncate(String text, int at) { if (text.length() < at) return text;