summaryrefslogtreecommitdiff
path: root/addons/im_livechat
diff options
context:
space:
mode:
authorSébastien Theys <seb@odoo.com>2020-12-07 13:06:15 +0000
committerSébastien Theys <seb@odoo.com>2020-12-07 13:06:15 +0000
commit9fbea9f8ee193e672c855c73ad29de187f27cef1 (patch)
tree7060d2860d2a3c517943e8171dca19dec3fb218d /addons/im_livechat
parent486c445d2200d3805ffac30e84ff35a7a61bf0b7 (diff)
[FIX] mail, im_livechat: properly handle multiple public partners
task-2391334 closes odoo/odoo#62956 Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Diffstat (limited to 'addons/im_livechat')
-rw-r--r--addons/im_livechat/models/mail_channel.py9
-rw-r--r--addons/im_livechat/static/src/models/messaging_notification_handler/messaging_notification_handler.js2
-rw-r--r--addons/im_livechat/static/src/models/thread/thread.js2
3 files changed, 7 insertions, 6 deletions
diff --git a/addons/im_livechat/models/mail_channel.py b/addons/im_livechat/models/mail_channel.py
index 9f090a6ccfc..f6c89c3666c 100644
--- a/addons/im_livechat/models/mail_channel.py
+++ b/addons/im_livechat/models/mail_channel.py
@@ -104,12 +104,13 @@ class MailChannel(models.Model):
if not partners:
# operator probably testing the livechat with his own user
partners = channel_partner_ids
- if partners and partners[0] != self.env.ref('base.public_partner'):
+ first_partner = partners and partners[0]
+ if first_partner and (not first_partner.user_ids or not any(user._is_public() for user in first_partner.user_ids)):
# legit non-public partner
return {
- 'country': partners[0].country_id.name_get()[0] if partners[0].country_id else False,
- 'id': partners[0].id,
- 'name': partners[0].name,
+ 'country': first_partner.country_id.name_get()[0] if first_partner.country_id else False,
+ 'id': first_partner.id,
+ 'name': first_partner.name,
}
return {
'country': self.country_id.name_get()[0] if self.country_id else False,
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 ca08208907d..efae3eed105 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
@@ -23,7 +23,7 @@ registerInstancePatchModel('mail.messaging_notification_handler', 'im_livechat/s
}
let partnerId;
let partnerName;
- if (partner_id === this.env.messaging.publicPartner.id) {
+ if (this.env.messaging.publicPartners.some(publicPartner => publicPartner.id === partner_id)) {
// Some shenanigans that this is a typing notification
// from public partner.
partnerId = channel.correspondent.id;
diff --git a/addons/im_livechat/static/src/models/thread/thread.js b/addons/im_livechat/static/src/models/thread/thread.js
index b3984500f8d..745aff78f69 100644
--- a/addons/im_livechat/static/src/models/thread/thread.js
+++ b/addons/im_livechat/static/src/models/thread/thread.js
@@ -39,7 +39,7 @@ registerClassPatchModel('mail.thread', 'im_livechat/static/src/models/thread/thr
* of polluting the database, it is therefore acceptable and
* easier to handle one temporary partner per channel.
*/
- data2.members.push(['unlink', this.env.messaging.publicPartner]);
+ data2.members.push(['unlink', this.env.messaging.publicPartners]);
const partner = this.env.models['mail.partner'].create(
Object.assign(
this.env.models['mail.partner'].convertData(data.livechat_visitor),