mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-07 16:37:02 +03:00
Resolve #497
This commit is contained in:
parent
e0e69b3d3d
commit
e5113ef20a
1 changed files with 21 additions and 31 deletions
|
|
@ -89,11 +89,15 @@ const
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {EmailCollectionModel} emails
|
||||||
|
* @param {Object} unic
|
||||||
|
* @param {Map} localEmails
|
||||||
|
*/
|
||||||
replyHelper = (emails, unic, localEmails) => {
|
replyHelper = (emails, unic, localEmails) => {
|
||||||
emails.forEach(email => {
|
emails.forEach(email => {
|
||||||
if (undefined === unic[email.email]) {
|
if (!unic[email.email] && !localEmails.has(email.email)) {
|
||||||
unic[email.email] = true;
|
localEmails.set(email.email, email);
|
||||||
localEmails.push(email);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
@ -414,50 +418,36 @@ export class MessageModel extends AbstractModel {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Object} excludeEmails
|
* @param {Object} excludeEmails
|
||||||
* @param {boolean=} last = false
|
|
||||||
* @returns {Array}
|
* @returns {Array}
|
||||||
*/
|
*/
|
||||||
replyEmails(excludeEmails, last) {
|
replyEmails(excludeEmails) {
|
||||||
const result = [],
|
const
|
||||||
unic = undefined === excludeEmails ? {} : excludeEmails;
|
result = new Map(),
|
||||||
|
unic = excludeEmails || {};
|
||||||
replyHelper(this.replyTo, unic, result);
|
replyHelper(this.replyTo, unic, result);
|
||||||
if (!result.length) {
|
result.size || replyHelper(this.from, unic, result);
|
||||||
replyHelper(this.from, unic, result);
|
return result.size ? [...result.values()] : [this.to[0]];
|
||||||
}
|
|
||||||
|
|
||||||
if (!result.length && !last) {
|
|
||||||
return this.replyEmails({}, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Object} excludeEmails
|
* @param {Object} excludeEmails
|
||||||
* @param {boolean=} last = false
|
|
||||||
* @returns {Array.<Array>}
|
* @returns {Array.<Array>}
|
||||||
*/
|
*/
|
||||||
replyAllEmails(excludeEmails, last) {
|
replyAllEmails(excludeEmails) {
|
||||||
let data = [];
|
const
|
||||||
const toResult = [],
|
toResult = new Map(),
|
||||||
ccResult = [],
|
ccResult = new Map(),
|
||||||
unic = undefined === excludeEmails ? {} : excludeEmails;
|
unic = excludeEmails || {};
|
||||||
|
|
||||||
replyHelper(this.replyTo, unic, toResult);
|
replyHelper(this.replyTo, unic, toResult);
|
||||||
if (!toResult.length) {
|
if (!toResult.size) {
|
||||||
replyHelper(this.from, unic, toResult);
|
replyHelper(this.from, unic, toResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
replyHelper(this.to, unic, toResult);
|
replyHelper(this.to, unic, toResult);
|
||||||
|
|
||||||
replyHelper(this.cc, unic, ccResult);
|
replyHelper(this.cc, unic, ccResult);
|
||||||
|
|
||||||
if (!toResult.length && !last) {
|
return [...toResult.values(), ...ccResult.values()];
|
||||||
data = this.replyAllEmails({}, true);
|
|
||||||
return [data[0], ccResult];
|
|
||||||
}
|
|
||||||
|
|
||||||
return [toResult, ccResult];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
viewHtml() {
|
viewHtml() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue