summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js/models
diff options
context:
space:
mode:
authorRobot Odoo <xmo+roboto@odoo.com>2018-11-16 17:53:55 +0100
committerGitHub <noreply@github.com>2018-11-16 17:53:55 +0100
commitbc744a1da46efda6f1eb5c341f2fa5df30c9c7ad (patch)
treec6c1d94e5dfb9a6e9c2dd2472d0269d73b908b21 /addons/mail/static/src/js/models
parent6f7262f508d96ac856c0769d3494afddbbbaa17a (diff)
parente3f36b10ac6c47954dd29b003161a289f7baaeb3 (diff)
[MERGE][FIX] mail: several fixes in discuss, chat window, chatter
This merge fixes a crash in discuss, in addition to re-introduce some _quality of life_ features that have been mistakenly removed from the chatter and from chat windows: ### 1. No crash when searching messages This was caused by the addition of moderated channels. In short, fetching twice the same message was performing a re-render of the thread due to a mis-consideration of a moderation status change. When the fetch reaches the fetch limit, the re-render is considered as a "load more" fetch, which only works when there is at least one message registered for the current search. This is fixed by re-render when there is a change of moderation status only. Task-ID 1910180 ### 2. Easily mention followers and employees in chatter When mentioning a user from the chatter in a document, it was always fetching all partners in a arbitrary order. As a result, it was hard to mention followers and employees. This is fixed by re-introducing the previous behaviour on mentions, which groups them by followers, then employees, then all partners. Task-ID 1910111 ### 3. Show message document link in chat window When a message is linked to a document, it usually shows a link next to the message. This still works in the Discuss app, but not in chat windows. This erroneous regression was caused by a refactoring. This is fixed by re-introduced document links on messages in chat windows. Task-ID 1910119 closes odoo/odoo#28744
Diffstat (limited to 'addons/mail/static/src/js/models')
-rw-r--r--addons/mail/static/src/js/models/messages/message.js3
-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/thread.js7
4 files changed, 12 insertions, 8 deletions
diff --git a/addons/mail/static/src/js/models/messages/message.js b/addons/mail/static/src/js/models/messages/message.js
index 1176c0f8c48..4342b1e244a 100644
--- a/addons/mail/static/src/js/models/messages/message.js
+++ b/addons/mail/static/src/js/models/messages/message.js
@@ -458,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/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([]);