diff options
Diffstat (limited to 'addons/mail/static/src/js/models')
3 files changed, 26 insertions, 4 deletions
diff --git a/addons/mail/static/src/js/models/threads/dm_chat.js b/addons/mail/static/src/js/models/threads/dm_chat.js index c0ba9c527b0..78cc01a7044 100644 --- a/addons/mail/static/src/js/models/threads/dm_chat.js +++ b/addons/mail/static/src/js/models/threads/dm_chat.js @@ -101,6 +101,19 @@ var DMChat = TwoUserChannel.extend(ChannelSeenMixin, { getStatus: function () { return this.call('mail_service', 'getImStatus', { partnerID: this._directPartnerID }); }, + + /** + * @param {Object} data + * @param {string} data.outOfOfficeMessage + * @param {string} data.outOfOfficeDateEnd + */ + updateOutOfOfficeInfo: function (data) { + this._outOfOfficeMessage = data.outOfOfficeMessage; + this._outOfOfficeDateEnd = data.outOfOfficeDateEnd; + this.call('mail_service', 'getMailBus').trigger('updated_out_of_office', { + threadID: this.getID(), + }); + } }); return DMChat; diff --git a/addons/mail/static/src/js/models/threads/document_thread.js b/addons/mail/static/src/js/models/threads/document_thread.js index 08e441610ee..b4f1df097cf 100644 --- a/addons/mail/static/src/js/models/threads/document_thread.js +++ b/addons/mail/static/src/js/models/threads/document_thread.js @@ -329,7 +329,9 @@ var DocumentThread = Thread.extend({ .then(function (messages) { messages[0].model = resModel; messages[0].res_id = resID; - self.call('mail_service', 'addMessage', messages[0]); + self.call('mail_service', 'addMessage', messages[0], { + postedFromDocumentThread: true, + }); return messages[0]; }); }); diff --git a/addons/mail/static/src/js/models/threads/mixins/thread_typing_mixin.js b/addons/mail/static/src/js/models/threads/mixins/thread_typing_mixin.js index 7d97538dbb9..3c98836dc70 100644 --- a/addons/mail/static/src/js/models/threads/mixins/thread_typing_mixin.js +++ b/addons/mail/static/src/js/models/threads/mixins/thread_typing_mixin.js @@ -171,11 +171,15 @@ var ThreadTypingMixin = { if (this._isTypingMyselfInfo(params)) { return; } + var partnerID = params.partnerID; this._othersTypingTimers.registerTimer({ - timeoutCallbackArguments: [params.partnerID], - timerID: params.partnerID, + timeoutCallbackArguments: [partnerID], + timerID: partnerID, }); - this._typingPartnerIDs.push(params.partnerID); + if (_.contains(this._typingPartnerIDs, partnerID)) { + return; + } + this._typingPartnerIDs.push(partnerID); this._warnUpdatedTypingPartners(); }, /** @@ -209,6 +213,9 @@ var ThreadTypingMixin = { unregisterTyping: function (params) { var partnerID = params.partnerID; this._othersTypingTimers.unregisterTimer({ timerID: partnerID }); + if (!_.contains(this._typingPartnerIDs, partnerID)) { + return; + } this._typingPartnerIDs = _.reject(this._typingPartnerIDs, function (id) { return id === partnerID; }); |
