diff --git a/addons/website_livechat/models/discuss_channel.py b/addons/website_livechat/models/discuss_channel.py index eafb26562a7..d78e72c27d1 100644 --- a/addons/website_livechat/models/discuss_channel.py +++ b/addons/website_livechat/models/discuss_channel.py @@ -33,10 +33,11 @@ class DiscussChannel(models.Model): for channel in self.filtered('livechat_visitor_id'): visitor = channel.livechat_visitor_id try: + country_id = visitor.partner_id.country_id or visitor.country_id channel_infos_dict[channel.id]['visitor'] = { - 'display_name': visitor.display_name, - 'country_code': visitor.country_id.code.lower() if visitor.country_id else False, - 'country_id': visitor.country_id.id, + 'display_name': visitor.partner_id.name or visitor.partner_id.display_name or visitor.display_name, + 'country_code': country_id.code.lower() if country_id else False, + 'country_id': country_id.id, 'id': visitor.id, 'is_connected': visitor.is_connected, 'history': self.sudo()._get_visitor_history(visitor), diff --git a/addons/website_livechat/static/src/core/persona_model_patch.js b/addons/website_livechat/static/src/core/persona_model_patch.js index fa8a7e84ccb..15666e72b0e 100644 --- a/addons/website_livechat/static/src/core/persona_model_patch.js +++ b/addons/website_livechat/static/src/core/persona_model_patch.js @@ -5,15 +5,10 @@ import { patch } from "@web/core/utils/patch"; patch(Persona.prototype, "website_livechat", { get countryFlagUrl() { - const country = this.partner?.country ?? this.country; - return country - ? `/base/static/img/country_flags/${encodeURIComponent(country.code.toLowerCase())}.png` + return this.country + ? `/base/static/img/country_flags/${encodeURIComponent( + this.country.code.toLowerCase() + )}.png` : undefined; }, - get nameOrDisplayName() { - if (this.partner) { - return this.partner.nameOrDisplayName; - } - return this._super(); - }, }); diff --git a/addons/website_livechat/static/src/core/persona_service_patch.js b/addons/website_livechat/static/src/core/persona_service_patch.js index 6b2799b9e3f..391bbf57c79 100644 --- a/addons/website_livechat/static/src/core/persona_service_patch.js +++ b/addons/website_livechat/static/src/core/persona_service_patch.js @@ -13,17 +13,11 @@ patch(PersonaService.prototype, "website_livechat", { persona.langName = data.lang_name ?? persona.langName; persona.name = data.display_name ?? persona.name; persona.websiteName = data.website_name ?? persona.websiteName; - if (data.country_id) { - persona.country = persona.country ?? {}; - persona.country.id = data.country_id; - persona.country.code = data.country_code ?? persona.country.code; - } - if (data.partner_id) { - persona.partner = this.insert({ - id: data.partner_id, - type: "partner", - }); - } + } + if (data.country_id) { + persona.country = persona.country ?? {}; + persona.country.id = data.country_id; + persona.country.code = data.country_code ?? persona.country.code; } }, }); diff --git a/addons/website_livechat/static/src/core/thread_service_patch.js b/addons/website_livechat/static/src/core/thread_service_patch.js index 65de7db826b..fdf48a1342a 100644 --- a/addons/website_livechat/static/src/core/thread_service_patch.js +++ b/addons/website_livechat/static/src/core/thread_service_patch.js @@ -20,9 +20,9 @@ patch(ThreadService.prototype, "website_livechat", { */ avatarUrl(persona, thread) { if (persona?.type === "visitor" && thread?.id) { - return persona.partner + return persona.partner_id ? `/discuss/channel/${encodeURIComponent(thread.id)}/partner/${encodeURIComponent( - persona.id + persona.partner_id )}/avatar_128` : DEFAULT_AVATAR; } diff --git a/addons/website_livechat/static/src/core_ui/thread_patch.xml b/addons/website_livechat/static/src/core_ui/thread_patch.xml index 4c633a54464..8bb512bd278 100644 --- a/addons/website_livechat/static/src/core_ui/thread_patch.xml +++ b/addons/website_livechat/static/src/core_ui/thread_patch.xml @@ -5,7 +5,7 @@
- Avatar + Avatar
diff --git a/addons/website_livechat/static/tests/helpers/mock_server/models/discuss_channel.js b/addons/website_livechat/static/tests/helpers/mock_server/models/discuss_channel.js index 0332943b3a1..4c877f0e0c9 100644 --- a/addons/website_livechat/static/tests/helpers/mock_server/models/discuss_channel.js +++ b/addons/website_livechat/static/tests/helpers/mock_server/models/discuss_channel.js @@ -19,13 +19,16 @@ patch(MockServer.prototype, "website_livechat/models/discuss_channel", { const visitor = this.getRecords("website.visitor", [ ["id", "=", channel.livechat_visitor_id], ])[0]; + const partner = this.getRecords("res.partner", [ + ["id", "=", visitor.partner_id], + ])[0]; const country = this.getRecords("res.country", [ ["id", "=", visitor.country_id], ])[0]; channelInfo.visitor = { country_code: country && country.code, country_id: country && country.id, - display_name: visitor.display_name, + display_name: partner?.name ?? partner?.display_name ?? visitor.display_name, history: visitor.history, // TODO should be computed id: visitor.id, is_connected: visitor.is_connected,