From 66553a36dae5c95768a42b60f542e64a42171d9c Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 18 Nov 2024 16:00:03 +0100 Subject: [PATCH] Improvements for #1846 --- dev/Common/Html.js | 13 +++++++++++-- dev/View/Popup/Compose.js | 11 ++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/dev/Common/Html.js b/dev/Common/Html.js index 0be300ec9..dce7c9e53 100644 --- a/dev/Common/Html.js +++ b/dev/Common/Html.js @@ -257,6 +257,15 @@ export const rightmargin: (value, node) => node.style.marginRight = pInt(value) + 'px' }, allowedAttributes = [ + // SnappyMail +// 'data-x-href-broken', +// 'data-x-href-tracking', + 'data-x-src', +// 'data-x-src-hidden', +// 'data-x-src-tracking', +// 'data-x-src-broken', +// 'data-x-style-url', +// 'data-x-style-broken-urls', // defaults 'name', 'dir', 'lang', 'style', 'title', @@ -493,12 +502,12 @@ export const let attachment; if (value.startsWith('cid:')) { + setAttribute('data-x-src', value); value = value.slice(4); - setAttribute('data-x-src-cid', value); attachment = findAttachmentByCid(value); if (attachment?.download) { oElement.src = attachment.linkPreview(); - oElement.title += ' ('+attachment.fileName+')'; +// oElement.title || (oElement.title = '+attachment.fileName); attachment.isInline(true); attachment.isLinked(true); } diff --git a/dev/View/Popup/Compose.js b/dev/View/Popup/Compose.js index a30e3eb99..d6eca1bac 100644 --- a/dev/View/Popup/Compose.js +++ b/dev/View/Popup/Compose.js @@ -970,7 +970,7 @@ export class ComposePopupView extends AbstractViewPopup { // https://github.com/the-djmaze/snappymail/issues/491 tpl.innerHTML = oLastMessage.bodyAsHTML(); tpl.content.querySelectorAll('img').forEach(img => { - img.src || img.dataset.xSrcCid || img.dataset.xSrc || img.replaceWith(img.alt || img.title) + img.src || img.dataset.xSrc || img.replaceWith(img.alt || img.title) }); sText = tpl.innerHTML.trim(); @@ -1514,6 +1514,15 @@ export class ComposePopupView extends AbstractViewPopup { isHtml = this.oEditor.isHtml(); if (isHtml) { + tpl.innerHTML = Text; + tpl.content.querySelectorAll('img').forEach(img => { + if (img.dataset.xSrc) { + img.src = img.dataset.xSrc; + img.removeAttribute('data-x-src') + } + }); + Text = tpl.innerHTML.trim(); + do { l = Text.length; Text = Text