summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js/models/threads/mailbox.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/mail/static/src/js/models/threads/mailbox.js')
-rw-r--r--addons/mail/static/src/js/models/threads/mailbox.js33
1 files changed, 10 insertions, 23 deletions
diff --git a/addons/mail/static/src/js/models/threads/mailbox.js b/addons/mail/static/src/js/models/threads/mailbox.js
index 28dbc4b7163..82d65bdd6cc 100644
--- a/addons/mail/static/src/js/models/threads/mailbox.js
+++ b/addons/mail/static/src/js/models/threads/mailbox.js
@@ -46,28 +46,6 @@ var Mailbox = SearchableThread.extend({
this._mailboxCounter = Math.max(this._mailboxCounter - num, 0);
},
/**
- * Override so that there are options to filter messages based on document
- * model and ID.
- *
- * @override
- * @param {Object} [options]
- * @param {string} [options.documentModel] model of the document that the
- * local messages of inbox must be linked to.
- * @param {integer} [options.documentID] ID of the document that the local
- * messages of inbox must be linked to.
- * @returns {mail.model.Message[]}
- */
- getMessages: function (options) {
- var messages = this._super.apply(this, arguments);
- if (options.documentModel && options.documentID) {
- return _.filter(messages, function (message) {
- return message.getDocumentModel() === options.documentModel &&
- message.getDocumentID() === options.documentID;
- });
- }
- return messages;
- },
- /**
* Get the mailbox counter of this mailbox.
*
* @returns {integer}
@@ -89,31 +67,40 @@ var Mailbox = SearchableThread.extend({
return this.fetchMessages().then(function (messages) {
// pick only last message of chatter
// items = list of objects
- // { unreadCounter: integer, message: mail.model.Message }
+ // {
+ // unreadCounter: {integer},
+ // message: {mail.model.Message},
+ // messageIDs: {integer[]},
+ // }
var items = [];
_.each(messages, function (message) {
var unreadCounter = 1;
+ var messageIDs = [message.getID()];
var similarItem = _.find(items, function (item) {
return self._areMessagesFromSameDocumentThread(item.message, message) ||
self._areMessagesFromSameChannel(item.message, message);
});
if (similarItem) {
unreadCounter = similarItem.unreadCounter + 1;
+ messageIDs = similarItem.messageIDs.concat(messageIDs);
var index = _.findIndex(items, similarItem);
items[index] = {
unreadCounter: unreadCounter,
message: message,
+ messageIDs: messageIDs
};
} else {
items.push({
unreadCounter: unreadCounter,
message: message,
+ messageIDs: messageIDs,
});
}
});
return _.map(items, function (item) {
return _.extend(item.message.getPreview(), {
unreadCounter: item.unreadCounter,
+ messageIDs: item.messageIDs,
});
});
});