summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js/models/threads
diff options
context:
space:
mode:
authorRobot Odoo <xmo+roboto@odoo.com>2018-11-14 08:13:29 +0100
committerGitHub <noreply@github.com>2018-11-14 08:13:29 +0100
commit5f8d3c61bee40d027efc5041cdc4bca5e67c42d7 (patch)
tree3d5888fe31bc6c669b1b32e98d8f262e0b329ef3 /addons/mail/static/src/js/models/threads
parent8efa9e5fe9e8748b3a264a89416ef90c9b8d2683 (diff)
parent8af392865deac628b1ff57627fa116131547bea1 (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.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..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,
});
});
});