From eaf70bbc8f70970dcc77251583c0188bc5ab878a Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 5 Feb 2019 18:10:36 +0000 Subject: [PATCH] Removed unused inline images on save draft --- .../eu/faircode/email/FragmentCompose.java | 15 +++++++++++++++ .../java/eu/faircode/email/MessageHelper.java | 18 +----------------- 2 files changed, 16 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 7e88c75f79..749c581f18 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -87,6 +87,7 @@ import com.google.android.material.bottomnavigation.LabelVisibilityMode; import com.google.android.material.snackbar.Snackbar; import org.jsoup.Jsoup; +import org.jsoup.nodes.Element; import org.openintents.openpgp.OpenPgpError; import org.openintents.openpgp.util.OpenPgpApi; import org.openintents.openpgp.util.OpenPgpServiceConnection; @@ -2003,6 +2004,20 @@ public class FragmentCompose extends FragmentBase { db.message().setMessageContent(draft.id, true, HtmlHelper.getPreview(body)); } + // Remove unused inline images + List cids = new ArrayList<>(); + for (Element element : Jsoup.parse(body.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() && attachment.cid != null && !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_delete) { EntityFolder trash = db.folder().getFolderByType(draft.account, EntityFolder.TRASH); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 752fc26072..af478a5453 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -23,9 +23,6 @@ import android.content.Context; import android.text.TextUtils; import android.webkit.MimeTypeMap; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Element; - import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; @@ -336,21 +333,8 @@ public class MessageHelper { alternativePart.addBodyPart(plainPart); alternativePart.addBodyPart(htmlPart); - List cids = new ArrayList<>(); - for (Element element : Jsoup.parse(body.toString()).select("img")) { - String src = element.attr("src"); - if (src.startsWith("cid:")) - cids.add("<" + src.substring(4) + ">"); - } - - List attachments = db.attachment().getAttachments(message.id); - for (EntityAttachment attachment : new ArrayList<>(attachments)) - if (attachment.isInline() && attachment.cid != null && !cids.contains(attachment.cid)) { - Log.i("Removing unused inline attachment cid=" + attachment.cid); - attachments.remove(attachment); - } - int available = 0; + List attachments = db.attachment().getAttachments(message.id); for (EntityAttachment attachment : attachments) if (attachment.available) available++;