diff options
| author | Sébastien Theys <seb@odoo.com> | 2020-10-23 11:03:09 +0000 |
|---|---|---|
| committer | Sébastien Theys <seb@odoo.com> | 2020-10-23 11:03:10 +0000 |
| commit | 91ce61ba568d83190e7ed2c168fd56101474683b (patch) | |
| tree | 474e1da8fefde0a147ccc68c0f5868eeff250a45 /addons/im_livechat | |
| parent | 50b8e83597ec07e091e1a4b62184e148ddcfb6c5 (diff) | |
[FIX] mail: do not return members of channels in channel_info
This PR has 3 parts:
The members fix itself, which is necessary for performance reasons especially
at init messaging, as per described in the task.
Adding the partner name in the typing payload, because due to not knowing all
members anymore, it is necessary to properly display who is typing.
Restrict restoring scroll position only if the corresponding scroll height is
available, to make the scroll feature and particularly the corresponding tests
more robust.
task-2360020
closes odoo/odoo#60091
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Diffstat (limited to 'addons/im_livechat')
3 files changed, 9 insertions, 3 deletions
diff --git a/addons/im_livechat/static/src/components/thread_icon/thread_icon_tests.js b/addons/im_livechat/static/src/components/thread_icon/thread_icon_tests.js index 6ff7767af25..a8dceda1484 100644 --- a/addons/im_livechat/static/src/components/thread_icon/thread_icon_tests.js +++ b/addons/im_livechat/static/src/components/thread_icon/thread_icon_tests.js @@ -70,8 +70,9 @@ QUnit.test('livechat: public website visitor is typing', async function (assert) await afterNextRender(() => { const typingData = { info: 'typing_status', - partner_id: this.env.messaging.publicPartner.id, is_typing: true, + partner_id: this.env.messaging.publicPartner.id, + partner_name: this.env.messaging.publicPartner.name, }; const notification = [[false, 'mail.channel', 20], typingData]; this.widget.call('bus_service', 'trigger', 'notification', [notification]); diff --git a/addons/im_livechat/static/src/components/thread_textual_typing_status/thread_textual_typing_status_tests.js b/addons/im_livechat/static/src/components/thread_textual_typing_status/thread_textual_typing_status_tests.js index b3cbe96e277..dcc04fe741a 100644 --- a/addons/im_livechat/static/src/components/thread_textual_typing_status/thread_textual_typing_status_tests.js +++ b/addons/im_livechat/static/src/components/thread_textual_typing_status/thread_textual_typing_status_tests.js @@ -66,8 +66,9 @@ QUnit.test('receive visitor typing status "is typing"', async function (assert) await afterNextRender(() => { const typingData = { info: 'typing_status', - partner_id: this.env.messaging.publicPartner.id, is_typing: true, + partner_id: this.env.messaging.publicPartner.id, + partner_name: this.env.messaging.publicPartner.name, }; const notification = [[false, 'mail.channel', 20], typingData]; this.widget.call('bus_service', 'trigger', 'notification', [notification]); diff --git a/addons/im_livechat/static/src/models/messaging_notification_handler/messaging_notification_handler.js b/addons/im_livechat/static/src/models/messaging_notification_handler/messaging_notification_handler.js index 25e71660ebe..ca08208907d 100644 --- a/addons/im_livechat/static/src/models/messaging_notification_handler/messaging_notification_handler.js +++ b/addons/im_livechat/static/src/models/messaging_notification_handler/messaging_notification_handler.js @@ -13,7 +13,7 @@ registerInstancePatchModel('mail.messaging_notification_handler', 'im_livechat/s * @override */ _handleNotificationChannelTypingStatus(channelId, data) { - const { partner_id } = data; + const { partner_id, partner_name } = data; const channel = this.env.models['mail.thread'].findFromIdentifyingData({ id: channelId, model: 'mail.channel', @@ -22,15 +22,19 @@ registerInstancePatchModel('mail.messaging_notification_handler', 'im_livechat/s return; } let partnerId; + let partnerName; if (partner_id === this.env.messaging.publicPartner.id) { // Some shenanigans that this is a typing notification // from public partner. partnerId = channel.correspondent.id; + partnerName = channel.correspondent.name; } else { partnerId = partner_id; + partnerName = partner_name; } this._super(channelId, Object.assign(data, { partner_id: partnerId, + partner_name: partnerName, })); }, }); |
