From b5ce994762722cfbc2519bd87bcb66c68fa04981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20K=C3=BChn?= Date: Wed, 8 May 2019 08:10:31 +0000 Subject: [PATCH] [FIX] im_support, mail: message with odoobot as author Before this commit, the `author_id` of a message with odoobot was `"ODOOBOT"`. This leads to some issues due to `author_id` being considered as an array `[partnerID, name]`. Because of this, mail status manager was registering a partner with ID `"O"` (1st char of `"ODOOBOT"`) for fetching its `im_status`. Its `im_status` was never updated, since no partner has such ID. However, the mail status manager kept this partner flagged with missing `im_status` and still attempted to fetch its `im_status`, indefinitely. This commit fixes the issue by turning `author_id` of a message with odoobot into arrray `["ODOOBOT", "ODOOBOT"]`. That way, `author_id` of a message is always an array, and the `im_status` of `"ODOOBOT"` is no longer fetched. --- addons/im_support/static/src/js/support_message.js | 5 ++++- addons/mail/static/src/js/models/messages/message.js | 3 ++- addons/mail/static/src/js/services/mail_manager.js | 4 ++-- .../mail/static/src/js/services/mail_notification_manager.js | 3 +-- addons/mail/static/src/js/services/mail_status_manager.js | 3 +++ 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/addons/im_support/static/src/js/support_message.js b/addons/im_support/static/src/js/support_message.js index bf21bd2624f..7d7e33aef1c 100644 --- a/addons/im_support/static/src/js/support_message.js +++ b/addons/im_support/static/src/js/support_message.js @@ -14,7 +14,10 @@ var SupportMessage = Message.extend({ */ init: function () { this._super.apply(this, arguments); - if (this._serverAuthorID !== this.call('mail_service', 'getOdoobotID')) { + if ( + !this._serverAuthorID || + this._serverAuthorID[0] !== this.call('mail_service', 'getOdoobotID')[0] + ) { if (!this._serverAuthorID[0]) { // the author is the client this._serverAuthorID = [session.partner_id, session.name]; diff --git a/addons/mail/static/src/js/models/messages/message.js b/addons/mail/static/src/js/models/messages/message.js index a414a11874b..613e94c54f8 100644 --- a/addons/mail/static/src/js/models/messages/message.js +++ b/addons/mail/static/src/js/models/messages/message.js @@ -578,7 +578,8 @@ var Message = AbstractMessage.extend(Mixins.EventDispatcherMixin, ServicesMixin * @return {boolean} */ _isOdoobotAuthor: function () { - return this._serverAuthorID === this.call('mail_service', 'getOdoobotID'); + return this._serverAuthorID && + this._serverAuthorID[0] === this.call('mail_service', 'getOdoobotID')[0]; }, /** * State whether the message is transient or not diff --git a/addons/mail/static/src/js/services/mail_manager.js b/addons/mail/static/src/js/services/mail_manager.js index 5eb588d24e7..394892952c4 100644 --- a/addons/mail/static/src/js/services/mail_manager.js +++ b/addons/mail/static/src/js/services/mail_manager.js @@ -46,7 +46,7 @@ var PREVIEW_MSG_MAX_SIZE = 350; // optimal for native english speakers var MailManager = AbstractService.extend({ dependencies: ['ajax', 'bus_service', 'local_storage'], - _ODOOBOT_ID: "ODOOBOT", // default authorID for transient messages + _ODOOBOT_ID: ["ODOOBOT", "ODOOBOT"], // authorID for transient messages /** * @override @@ -258,7 +258,7 @@ var MailManager = AbstractService.extend({ /** * Get the OdooBot ID, which is the default authorID for transient messages * - * @returns {string} + * @returns {Array} */ getOdoobotID: function () { return this._ODOOBOT_ID; diff --git a/addons/mail/static/src/js/services/mail_notification_manager.js b/addons/mail/static/src/js/services/mail_notification_manager.js index fb3527b2b90..849ced2e065 100644 --- a/addons/mail/static/src/js/services/mail_notification_manager.js +++ b/addons/mail/static/src/js/services/mail_notification_manager.js @@ -468,12 +468,11 @@ MailManager.include({ * * @private * @param {Object} data - * @param {string} data.author_id */ _handlePartnerTransientMessageNotification: function (data) { var lastMessage = _.last(this._messages); data.id = (lastMessage ? lastMessage.getID() : 0) + 0.01; - data.author_id = data.author_id || this.getOdoobotID(); + data.author_id = this.getOdoobotID(); this.addMessage(data); }, /** diff --git a/addons/mail/static/src/js/services/mail_status_manager.js b/addons/mail/static/src/js/services/mail_status_manager.js index 5ca151d47bf..dffe10380e1 100644 --- a/addons/mail/static/src/js/services/mail_status_manager.js +++ b/addons/mail/static/src/js/services/mail_status_manager.js @@ -30,6 +30,9 @@ MailManager.include({ getImStatus: function (data) { var self = this; var partnerID = data.partnerID; + if (partnerID === this.getOdoobotID()[0]) { + return 'bot'; + } if (!this._imStatus[partnerID]) { // Add to list to call it in next bus update or _fetchMissingImStatus this._imStatus[partnerID] = undefined;