From 942df1e6b8fb0098c5f5820e2947ac3a391d2b94 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 8 Jan 2025 12:18:46 +0100 Subject: [PATCH] Recognize diff/patch extension --- .../java/eu/faircode/email/MessageHelper.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 2f81f030b4..dd42830484 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -32,6 +32,7 @@ import android.os.Build; import android.provider.CalendarContract; import android.provider.ContactsContract; import android.system.ErrnoException; +import android.text.Html; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.style.ForegroundColorSpan; @@ -3792,12 +3793,19 @@ public class MessageHelper { class PartHolder { Part part; ContentType contentType; + String filename; PartHolder(Part part, ContentType contentType) { this.part = part; this.contentType = contentType; } + PartHolder(Part part, ContentType contentType, String filename) { + this.part = part; + this.contentType = contentType; + this.filename = filename; + } + boolean isPlainText() { return "text/plain".equalsIgnoreCase(contentType.getBaseType()); } @@ -3811,7 +3819,10 @@ public class MessageHelper { } boolean isPatch() { - return "text/x-diff".equalsIgnoreCase(contentType.getBaseType()) || + String ext = Helper.getExtension(filename); + return "diff".equalsIgnoreCase(ext) || + "patch".equalsIgnoreCase(ext) || + "text/x-diff".equalsIgnoreCase(contentType.getBaseType()) || "text/x-patch".equalsIgnoreCase(contentType.getBaseType()); } @@ -4239,7 +4250,10 @@ public class MessageHelper { result = HtmlHelper.formatPlainText(result); } } else if (h.isPatch()) { + String filename = h.part.getFileName(); result = (first ? "" : "

") + + (TextUtils.isEmpty(filename) ? "" : + "
" + Html.escapeHtml(filename) + "

") + "
" +
                             HtmlHelper.formatPlainText(result) +
                             "
"; @@ -5382,10 +5396,13 @@ public class MessageHelper { filename += ".html"; } + String ext = Helper.getExtension(filename); if ("text/markdown".equalsIgnoreCase(ct) || "text/x-diff".equalsIgnoreCase(ct) || - "text/x-patch".equalsIgnoreCase(ct)) - parts.extra.add(new PartHolder(part, contentType)); + "text/x-patch".equalsIgnoreCase(ct) || + "diff".equalsIgnoreCase(ext) || + "patch".equalsIgnoreCase(ext)) + parts.extra.add(new PartHolder(part, contentType, filename)); if (Report.isDeliveryStatus(ct) || Report.isDispositionNotification(ct) ||