mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-31 21:19:21 +03:00
Resolve Issue #100
This commit is contained in:
parent
1996c79240
commit
bb15cd1ec3
5 changed files with 81 additions and 68 deletions
|
|
@ -220,7 +220,7 @@ export const MessageUserStore = new class {
|
|||
}
|
||||
});
|
||||
|
||||
this.purgeMessageBodyCacheThrottle = this.purgeMessageBodyCache.throttle(30000);
|
||||
this.purgeMessageBodyCache = this.purgeMessageBodyCache.throttle(30000);
|
||||
}
|
||||
|
||||
purgeMessageBodyCache() {
|
||||
|
|
@ -428,16 +428,12 @@ export const MessageUserStore = new class {
|
|||
);
|
||||
}
|
||||
|
||||
setMessage(data, cached) {
|
||||
setMessage(data, cached, oMessage) {
|
||||
let isNew = false,
|
||||
body = null,
|
||||
json = data && data.Result,
|
||||
id = '',
|
||||
plain = '',
|
||||
resultHtml = '',
|
||||
messagesDom = this.messagesBodiesDom(),
|
||||
selectedMessage = this.selectorMessageSelected(),
|
||||
message = this.message();
|
||||
message = oMessage || this.message();
|
||||
|
||||
if (
|
||||
json &&
|
||||
|
|
@ -447,7 +443,7 @@ export const MessageUserStore = new class {
|
|||
) {
|
||||
const threads = message.threads();
|
||||
if (message.uid !== json.Uid && 1 < threads.length && threads.includes(json.Uid)) {
|
||||
message = MessageModel.reviveFromJson(json);
|
||||
message = oMessage ? null : MessageModel.reviveFromJson(json);
|
||||
if (message) {
|
||||
message.threads(threads);
|
||||
MessageFlagsCache.initMessage(message);
|
||||
|
|
@ -460,7 +456,7 @@ export const MessageUserStore = new class {
|
|||
}
|
||||
|
||||
if (message && message.uid === json.Uid) {
|
||||
this.messageError('');
|
||||
oMessage || this.messageError('');
|
||||
|
||||
if (cached) {
|
||||
delete json.IsSeen;
|
||||
|
|
@ -475,7 +471,8 @@ export const MessageUserStore = new class {
|
|||
addRequestedMessage(message.folder, message.uid);
|
||||
|
||||
if (messagesDom) {
|
||||
id = 'rl-mgs-' + message.hash.replace(/[^a-zA-Z0-9]/g, '');
|
||||
let body = null,
|
||||
id = 'rl-mgs-' + message.hash.replace(/[^a-zA-Z0-9]/g, '');
|
||||
|
||||
const textBody = elementById(id);
|
||||
if (textBody) {
|
||||
|
|
@ -483,7 +480,9 @@ export const MessageUserStore = new class {
|
|||
message.fetchDataFromDom();
|
||||
messagesDom.append(textBody);
|
||||
} else {
|
||||
let isHtml = !!json.Html;
|
||||
let isHtml = !!json.Html,
|
||||
plain = '',
|
||||
resultHtml = '<pre></pre>';
|
||||
if (isHtml) {
|
||||
resultHtml = json.Html.toString();
|
||||
if (SettingsUserStore.removeColors()) {
|
||||
|
|
@ -508,8 +507,6 @@ export const MessageUserStore = new class {
|
|||
} else {
|
||||
resultHtml = '<pre>' + resultHtml + '</pre>';
|
||||
}
|
||||
} else {
|
||||
resultHtml = '<pre>' + resultHtml + '</pre>';
|
||||
}
|
||||
|
||||
body = Element.fromHTML('<div id="' + id + '" hidden="" class="b-text-part '
|
||||
|
|
@ -517,22 +514,25 @@ export const MessageUserStore = new class {
|
|||
+ findEmailAndLinks(resultHtml)
|
||||
+ '</div>');
|
||||
|
||||
// Drop Microsoft Office style properties
|
||||
const rgbRE = /rgb\((\d+),\s*(\d+),\s*(\d+)\)/g,
|
||||
hex = n => ('0' + parseInt(n).toString(16)).slice(-2);
|
||||
body.querySelectorAll('[style*=mso]').forEach(el =>
|
||||
el.setAttribute('style', el.style.cssText.replace(rgbRE, (m,r,g,b) => '#' + hex(r) + hex(g) + hex(b)))
|
||||
);
|
||||
if (isHtml) {
|
||||
// Drop Microsoft Office style properties
|
||||
const rgbRE = /rgb\((\d+),\s*(\d+),\s*(\d+)\)/g,
|
||||
hex = n => ('0' + parseInt(n).toString(16)).slice(-2);
|
||||
body.querySelectorAll('[style*=mso]').forEach(el =>
|
||||
el.setAttribute('style', el.style.cssText.replace(rgbRE, (m,r,g,b) => '#' + hex(r) + hex(g) + hex(b)))
|
||||
);
|
||||
}
|
||||
|
||||
body.rlIsHtml = isHtml;
|
||||
body.rlHasImages = !!json.HasExternals;
|
||||
|
||||
message.body = body;
|
||||
|
||||
message.isHtml(isHtml);
|
||||
message.hasImages(!!json.HasExternals);
|
||||
message.hasImages(body.rlHasImages);
|
||||
|
||||
messagesDom.append(body);
|
||||
|
||||
message.storeDataInDom();
|
||||
|
||||
if (json.HasInternals) {
|
||||
message.showInternalImages();
|
||||
}
|
||||
|
|
@ -541,12 +541,12 @@ export const MessageUserStore = new class {
|
|||
message.showExternalImages();
|
||||
}
|
||||
|
||||
this.purgeMessageBodyCacheThrottle();
|
||||
this.purgeMessageBodyCache();
|
||||
}
|
||||
|
||||
this.messageActiveDom(message.body);
|
||||
oMessage || this.messageActiveDom(message.body);
|
||||
|
||||
this.hideMessageBodies();
|
||||
oMessage || this.hideMessageBodies();
|
||||
|
||||
if (body) {
|
||||
this.initOpenPgpControls(body, message);
|
||||
|
|
@ -554,7 +554,8 @@ export const MessageUserStore = new class {
|
|||
this.initBlockquoteSwitcher(body);
|
||||
}
|
||||
|
||||
message.body.hidden = false;
|
||||
oMessage || (message.body.hidden = false);
|
||||
oMessage && message.viewPopupMessage();
|
||||
}
|
||||
|
||||
MessageFlagsCache.initMessage(message);
|
||||
|
|
@ -563,8 +564,6 @@ export const MessageUserStore = new class {
|
|||
}
|
||||
|
||||
if (isNew) {
|
||||
message = this.message();
|
||||
|
||||
if (
|
||||
selectedMessage &&
|
||||
message &&
|
||||
|
|
@ -613,20 +612,20 @@ export const MessageUserStore = new class {
|
|||
}
|
||||
}
|
||||
|
||||
populateMessageBody(oMessage) {
|
||||
populateMessageBody(oMessage, preload) {
|
||||
if (oMessage) {
|
||||
this.hideMessageBodies();
|
||||
this.messageLoading(true);
|
||||
preload || this.hideMessageBodies();
|
||||
preload || this.messageLoading(true);
|
||||
Remote.message((iError, oData, bCached) => {
|
||||
if (iError) {
|
||||
if (Notification.RequestAborted !== iError) {
|
||||
if (Notification.RequestAborted !== iError && !preload) {
|
||||
this.message(null);
|
||||
this.messageError(getNotification(iError));
|
||||
}
|
||||
} else {
|
||||
this.setMessage(oData, bCached);
|
||||
this.setMessage(oData, bCached, preload ? oMessage : null);
|
||||
}
|
||||
this.messageLoading(false);
|
||||
preload || this.messageLoading(false);
|
||||
}, oMessage.folder, oMessage.uid);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue