From 2916583d0bc71948bf1088142642086a310deb50 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 11 Dec 2023 23:46:45 +0100 Subject: [PATCH] Resolve #1332 --- dev/Common/File.js | 8 +++++--- dev/Common/Folders.js | 8 +++----- dev/External/User/ko.js | 3 ++- dev/Model/Message.js | 4 ++-- dev/View/User/MailBox/MessageList.js | 7 ++----- dev/View/User/MailBox/MessageView.js | 24 ++++++++++++++---------- 6 files changed, 28 insertions(+), 26 deletions(-) diff --git a/dev/Common/File.js b/dev/Common/File.js index f333235fa..0c793a92d 100644 --- a/dev/Common/File.js +++ b/dev/Common/File.js @@ -3,6 +3,8 @@ import { arrayLength } from 'Common/Utils'; +export const RFC822 = 'message/rfc822'; + const cache = {}, app = 'application/', @@ -12,8 +14,8 @@ const lowerCase = text => text.toLowerCase().trim(), exts = { - eml: 'message/rfc822', - mime: 'message/rfc822', + eml: RFC822, + mime: RFC822, vcard: 'text/vcard', vcf: 'text/vcard', htm: 'text/html', @@ -188,7 +190,7 @@ export const FileInfo = { case ['php', 'js', 'css', 'xml', 'html'].includes(ext) || 'text/html' == mimeType: result = FileType.Code; break; - case 'eml' == ext || ['message/delivery-status', 'message/rfc822'].includes(mimeType): + case 'eml' == ext || ['message/delivery-status', RFC822].includes(mimeType): result = FileType.Eml; break; case 'ics' == ext || mimeType == 'text/calendar': diff --git a/dev/Common/Folders.js b/dev/Common/Folders.js index 97bef2249..cbba0390d 100644 --- a/dev/Common/Folders.js +++ b/dev/Common/Folders.js @@ -1,8 +1,6 @@ +import { RFC822 } from 'Common/File'; +import { getFolderInboxName, getFolderFromCacheList } from 'Common/Cache'; import { isArray, arrayLength } from 'Common/Utils'; -import { - getFolderInboxName, - getFolderFromCacheList -} from 'Common/Cache'; import { SettingsUserStore } from 'Stores/User/Settings'; import { FolderUserStore } from 'Stores/User/Folder'; import { MessagelistUserStore } from 'Stores/User/Messagelist'; @@ -194,7 +192,7 @@ folderInformationMultiply = (boot = false) => { dropFilesInFolder = (sFolderFullName, files) => { let count = files.length; for (const file of files) { - if ('message/rfc822' === file.type) { + if (RFC822 === file.type) { let data = new FormData; data.append('folder', sFolderFullName); data.append('appendFile', file); diff --git a/dev/External/User/ko.js b/dev/External/User/ko.js index 358c32757..8fc26ffd5 100644 --- a/dev/External/User/ko.js +++ b/dev/External/User/ko.js @@ -1,5 +1,6 @@ import 'External/ko'; import ko from 'ko'; +import { RFC822 } from 'Common/File'; import { HtmlEditor } from 'Common/Html'; import { timeToNode } from 'Common/Translator'; import { doc, elementById, addEventsListeners, dropdowns, leftPanelDisabled } from 'Common/Globals'; @@ -43,7 +44,7 @@ const rlContentType = 'snappymail/action', let files = false; // if (e.dataTransfer.types.includes('Files')) for (const item of e.dataTransfer.items) { - files |= 'file' === item.kind && 'message/rfc822' === item.type; + files |= 'file' === item.kind && RFC822 === item.type; } if (files || dragMessages()) { e.stopPropagation(); diff --git a/dev/Model/Message.js b/dev/Model/Message.js index dff279d35..79b4149cd 100644 --- a/dev/Model/Message.js +++ b/dev/Model/Message.js @@ -11,7 +11,7 @@ import { addObservablesTo, addComputablesTo } from 'External/ko'; import { FolderUserStore, isAllowedKeyword } from 'Stores/User/Folder'; import { SettingsUserStore } from 'Stores/User/Settings'; -import { FileInfo } from 'Common/File'; +import { FileInfo, RFC822 } from 'Common/File'; import { AttachmentCollectionModel } from 'Model/AttachmentCollection'; import { EmailCollectionModel } from 'Model/EmailCollection'; import { AbstractModel } from 'Knoin/AbstractModel'; @@ -186,7 +186,7 @@ export class MessageModel extends AbstractModel { return b64EncodeJSONSafe({ folder: this.folder, uid: this.uid, - mimeType: 'message/rfc822', + mimeType: RFC822, fileName: (this.subject() || 'message-' + this.hash) + '.eml', accountHash: SettingsGet('accountHash') }); diff --git a/dev/View/User/MailBox/MessageList.js b/dev/View/User/MailBox/MessageList.js index 897f6d176..d81c3eb0b 100644 --- a/dev/View/User/MailBox/MessageList.js +++ b/dev/View/User/MailBox/MessageList.js @@ -2,19 +2,16 @@ import ko from 'ko'; import { addObservablesTo, addComputablesTo } from 'External/ko'; import { ScopeFolderList, ScopeMessageList, ScopeMessageView } from 'Common/Enums'; - import { ComposeType, FolderType, MessageSetAction } from 'Common/EnumsUser'; - import { doc, leftPanelDisabled, toggleLeftPanel, Settings, SettingsCapa, addEventsListeners, stopEvent, addShortcut, registerShortcut, formFieldFocused } from 'Common/Globals'; - import { arrayLength } from 'Common/Utils'; import { computedPaginatorHelper, showMessageComposer, populateMessageBody, downloadZip, moveAction } from 'Common/UtilsUser'; -import { FileInfo } from 'Common/File'; +import { FileInfo, RFC822 } from 'Common/File'; import { isFullscreen, toggleFullscreen } from 'Common/Fullscreen'; import { mailBox } from 'Common/Links'; @@ -610,7 +607,7 @@ export class MailMessageList extends AbstractViewRight { const dropZone = dom.querySelector('.listDragOver'), validFiles = oEvent => { for (const item of oEvent.dataTransfer.items) { - if ('file' === item.kind && 'message/rfc822' === item.type) { + if ('file' === item.kind && RFC822 === item.type) { return true; } } diff --git a/dev/View/User/MailBox/MessageView.js b/dev/View/User/MailBox/MessageView.js index dc27edbb0..4c248c24e 100644 --- a/dev/View/User/MailBox/MessageView.js +++ b/dev/View/User/MailBox/MessageView.js @@ -10,7 +10,7 @@ import { FolderType, MessageSetAction } from 'Common/EnumsUser'; - +import { RFC822 } from 'Common/File'; import { elementById, keyScopeReal, @@ -292,7 +292,19 @@ export class MailMessageView extends AbstractViewRight { return; } - if (eqs(event, '.attachmentsPlace .showPreview')) { + el = eqs(event, '.attachmentsPlace .showPreview'); + if (el) { + const attachment = ko.dataFor(el), url = attachment?.linkDownload(); +// if (url && FileType.Eml === attachment.fileType) { + if (url && RFC822 == attachment.mimeType) { + stopEvent(event); + fetchRaw(url).then(text => { + const oMessage = new MessageModel(); + MimeToMessage(text, oMessage); + // cleanHTML + oMessage.popupMessage(); + }); + } return; } @@ -326,14 +338,6 @@ export class MailMessageView extends AbstractViewRight { fetchRaw(url).then(text => showScreenPopup(OpenPgpImportPopupView, [text]) ); - } else if ('message/rfc822' == attachment.mimeType) { - // TODO - fetchRaw(url).then(text => { - const oMessage = new MessageModel(); - MimeToMessage(text, oMessage); - // cleanHTML - oMessage.popupMessage(); - }); } else { download(url, attachment.fileName); }