From c81d4bdad2f7d735dc6729a8395ba1e64dbeb398 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 16 Nov 2019 18:56:03 +0100 Subject: [PATCH] Remove inline images on send only --- .../eu/faircode/email/FragmentCompose.java | 38 +++++++++---------- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 75b26f1aa1..86764e3f33 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -3027,25 +3027,6 @@ public class FragmentCompose extends FragmentBase { db.message().setMessageReceived(draft.id, draft.received); } - // Remove unused inline images - StringBuilder sb = new StringBuilder(); - sb.append(body); - File rfile = draft.getRefFile(context); - if (rfile.exists()) - sb.append(Helper.readText(rfile)); - List cids = new ArrayList<>(); - for (Element element : JsoupEx.parse(sb.toString()).select("img")) { - String src = element.attr("src"); - if (src.startsWith("cid:")) - cids.add("<" + src.substring(4) + ">"); - } - - for (EntityAttachment attachment : new ArrayList<>(attachments)) - if (attachment.isInline() && !cids.contains(attachment.cid)) { - Log.i("Removing unused inline attachment cid=" + attachment.cid); - db.attachment().deleteAttachment(attachment.id); - } - // Execute action if (action == R.id.action_save || action == R.id.action_undo || @@ -3112,6 +3093,25 @@ public class FragmentCompose extends FragmentBase { } } else if (action == R.id.action_send) { + // Remove unused inline images + StringBuilder sb = new StringBuilder(); + sb.append(body); + File rfile = draft.getRefFile(context); + if (rfile.exists()) + sb.append(Helper.readText(rfile)); + List cids = new ArrayList<>(); + for (Element element : JsoupEx.parse(sb.toString()).select("img")) { + String src = element.attr("src"); + if (src.startsWith("cid:")) + cids.add("<" + src.substring(4) + ">"); + } + + for (EntityAttachment attachment : new ArrayList<>(attachments)) + if (attachment.isInline() && !cids.contains(attachment.cid)) { + Log.i("Removing unused inline attachment cid=" + attachment.cid); + db.attachment().deleteAttachment(attachment.id); + } + // Delete draft (cannot move to outbox) EntityOperation.queue(context, draft, EntityOperation.DELETE); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4c67238038..03829fbf3a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -605,7 +605,7 @@ The originally received message will be included Image could not be decoded Search on server is not available for this account - Unused inline images will be removed on save/send + Unused inline images will be removed on send Messages moved across accounts will be downloaded again resulting in extra data usage Raw message saved Attachment saved