diff options
| author | Robot Odoo <xmo+roboto@odoo.com> | 2018-11-14 08:13:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-14 08:13:29 +0100 |
| commit | 5f8d3c61bee40d027efc5041cdc4bca5e67c42d7 (patch) | |
| tree | 3d5888fe31bc6c669b1b32e98d8f262e0b329ef3 /addons/mail/static/src/js/models/threads | |
| parent | 8efa9e5fe9e8748b3a264a89416ef90c9b8d2683 (diff) | |
| parent | 8af392865deac628b1ff57627fa116131547bea1 (diff) | |
[MERGE][FIX] mail: preview not linked to any document
This fixes two issues relating to previews in the systray messaging menu
that are not linked to any document:
1. Clicking on such preview now redirects to Inbox
There was a traceback, because it was attempting to open a document.
2. Marking a read one of those previews now only marks this preview
It was marking all previews not linked to a document as read.
Task-ID 1891350
Task-ID 1907159
closes odoo/odoo#28462
Diffstat (limited to 'addons/mail/static/src/js/models/threads')
| -rw-r--r-- | addons/mail/static/src/js/models/threads/mailbox.js | 33 |
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..8d49d84d777 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.messagesIDs.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, }); }); }); |
