This commit is contained in:
the-djmaze 2022-08-25 14:08:19 +02:00
parent e0e69b3d3d
commit e5113ef20a

View file

@ -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() {