summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js/models
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-11-16 19:30:20 +0100
committerChristophe Simonis <chs@odoo.com>2018-11-16 19:30:20 +0100
commit6faad524cf5e4db02855cb213277c40aee14c42a (patch)
tree383c984dc1461a03481baa9fbdce8c156ca97e2e /addons/mail/static/src/js/models
parent3657dc77c2ddb4275f07d1271b93e7f25e09913a (diff)
parentbc744a1da46efda6f1eb5c341f2fa5df30c9c7ad (diff)
[MERGE] forward port branch 12.0 up to bc744a1da46
Diffstat (limited to 'addons/mail/static/src/js/models')
-rw-r--r--addons/mail/static/src/js/models/messages/message.js4
-rw-r--r--addons/mail/static/src/js/models/threads/channel.js5
-rw-r--r--addons/mail/static/src/js/models/threads/livechat.js5
-rw-r--r--addons/mail/static/src/js/models/threads/mailbox.js33
-rw-r--r--addons/mail/static/src/js/models/threads/thread.js7
5 files changed, 23 insertions, 31 deletions
diff --git a/addons/mail/static/src/js/models/messages/message.js b/addons/mail/static/src/js/models/messages/message.js
index c733b74f347..4342b1e244a 100644
--- a/addons/mail/static/src/js/models/messages/message.js
+++ b/addons/mail/static/src/js/models/messages/message.js
@@ -262,6 +262,7 @@ var Message = AbstractMessage.extend(Mixins.EventDispatcherMixin, ServicesMixin
documentID: this.getDocumentID(),
id: id,
imageSRC: this._getModuleIcon() || this.getAvatarSource(),
+ messageID: this.getID(),
status: this.status,
title: title,
};
@@ -457,6 +458,9 @@ var Message = AbstractMessage.extend(Mixins.EventDispatcherMixin, ServicesMixin
*/
setModerationStatus: function (newModerationStatus, options) {
var self = this;
+ if (newModerationStatus === this._moderationStatus) {
+ return;
+ }
this._moderationStatus = newModerationStatus;
if (newModerationStatus === 'accepted' && options) {
_.each(options.additionalThreadIDs, function (threadID) {
diff --git a/addons/mail/static/src/js/models/threads/channel.js b/addons/mail/static/src/js/models/threads/channel.js
index 695275e799e..808e8b7fbca 100644
--- a/addons/mail/static/src/js/models/threads/channel.js
+++ b/addons/mail/static/src/js/models/threads/channel.js
@@ -179,7 +179,8 @@ var Channel = SearchableThread.extend(ThreadTypingMixin, {
/**
* Get listeners of a channel
*
- * @returns {$.Promise<Object[]>} resolved with list of channel listeners
+ * @returns {$.Promise<Array<Object[]>>} resolved with list of list of
+ * channel listeners.
*/
getMentionPartnerSuggestions: function () {
var self = this;
@@ -193,7 +194,7 @@ var Channel = SearchableThread.extend(ThreadTypingMixin, {
})
.then(function (members) {
self._members = members;
- return members;
+ return [members];
});
}
return this._membersDef;
diff --git a/addons/mail/static/src/js/models/threads/livechat.js b/addons/mail/static/src/js/models/threads/livechat.js
index b7235e7bc0e..f4cb58ebad3 100644
--- a/addons/mail/static/src/js/models/threads/livechat.js
+++ b/addons/mail/static/src/js/models/threads/livechat.js
@@ -37,7 +37,8 @@ var Livechat = TwoUserChannel.extend({
* display of a user that is typing.
*
* @override
- * @returns {$.Promise<Object[]>} resolved with list of livechat members
+ * @returns {$.Promise<Array<Object[]>>} resolved with list of list of
+ * livechat members.
*/
getMentionPartnerSuggestions: function () {
var self = this;
@@ -49,7 +50,7 @@ var Livechat = TwoUserChannel.extend({
name: self._WEBSITE_USER_NAME,
});
}
- return self._members;
+ return [self._members];
});
},
/**
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,
});
});
});
diff --git a/addons/mail/static/src/js/models/threads/thread.js b/addons/mail/static/src/js/models/threads/thread.js
index c9dda28dd93..8c2beb8bbfa 100644
--- a/addons/mail/static/src/js/models/threads/thread.js
+++ b/addons/mail/static/src/js/models/threads/thread.js
@@ -15,7 +15,8 @@ var ServicesMixin = require('web.ServicesMixin');
* In particular, channels and mailboxes are two different kinds of threads.
*/
var Thread = AbstractThread.extend(ServicesMixin, {
-
+ // max number of fetched messages from the server
+ _FETCH_LIMIT: 30,
/**
* @override
* @param {Object} params
@@ -33,8 +34,6 @@ var Thread = AbstractThread.extend(ServicesMixin, {
// means that there is no message in this channel.
this._previewed = false;
this._type = params.data.type || params.data.channel_type;
- // max number of fetched messages from the server
- this._FETCH_LIMIT = 30;
},
//--------------------------------------------------------------------------
@@ -111,7 +110,7 @@ var Thread = AbstractThread.extend(ServicesMixin, {
* By default, a thread has not listener.
*
* @abstract
- * @returns {$.Promise<Object[]>}
+ * @returns {$.Promise<Array<Object[]>>}
*/
getMentionPartnerSuggestions: function () {
return $.when([]);