diff --git a/addons/website_livechat/models/website.py b/addons/website_livechat/models/website.py index 75196a88c27..519b82a90af 100644 --- a/addons/website_livechat/models/website.py +++ b/addons/website_livechat/models/website.py @@ -47,6 +47,7 @@ class Website(models.Model): return { "folded": False, "id": chat_request_channel.id, + "requested_by_operator": chat_request_channel.create_uid in chat_request_channel.livechat_operator_id.user_ids, "operator_pid": [ chat_request_channel.livechat_operator_id.id, chat_request_channel.livechat_operator_id.user_livechat_username or chat_request_channel.livechat_operator_id.display_name, diff --git a/addons/website_livechat/models/website_visitor.py b/addons/website_livechat/models/website_visitor.py index 406d3f9ebfd..c0aa8d61051 100644 --- a/addons/website_livechat/models/website_visitor.py +++ b/addons/website_livechat/models/website_visitor.py @@ -64,7 +64,7 @@ class WebsiteVisitor(models.Model): for visitor in self: operator = self.env.user country = visitor.country_id - visitor_name = "%s (%s)" % (visitor.display_name, country.name) if country else visitor.display_name + visitor_name = "Visitor #%d (%s)" % (visitor.id, country.name) if country else f"Visitor #{visitor.id}" members_to_add = [Command.link(operator.partner_id.id)] if visitor.partner_id: members_to_add.append(Command.link(visitor.partner_id.id)) @@ -116,6 +116,6 @@ class WebsiteVisitor(models.Model): discuss_channel = request.env["discuss.channel"].sudo().search([("uuid", "=", discuss_channel_uuid)]) discuss_channel.write({ 'livechat_visitor_id': visitor_sudo.id, - 'anonymous_name': visitor_sudo.display_name + 'anonymous_name': "Visitor #%d (%s)" % (visitor_sudo.id, visitor_sudo.country_id.name) if visitor_sudo.country_id else f"Visitor #{visitor_sudo.id}" }) return visitor_id, upsert 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 205d852adf9..19c4c623b12 100644 --- a/addons/website_livechat/static/src/core/thread_service_patch.js +++ b/addons/website_livechat/static/src/core/thread_service_patch.js @@ -2,6 +2,7 @@ import { DEFAULT_AVATAR } from "@mail/core/common/persona_service"; import { ThreadService } from "@mail/core/common/thread_service"; +import { assignDefined } from "@mail/utils/common/misc"; import { patch } from "@web/core/utils/patch"; patch(ThreadService.prototype, { @@ -13,6 +14,7 @@ patch(ThreadService.prototype, { type: "visitor", }); } + assignDefined(thread, data, ["requested_by_operator"]); }, /** * @param {import('@mail/core/common/persona_model').Persona} persona diff --git a/addons/website_livechat/static/src/embed/livechat_service_patch.js b/addons/website_livechat/static/src/embed/livechat_service_patch.js index 34809d44368..7f6295dfaef 100644 --- a/addons/website_livechat/static/src/embed/livechat_service_patch.js +++ b/addons/website_livechat/static/src/embed/livechat_service_patch.js @@ -12,9 +12,6 @@ patch(LivechatService.prototype, { }, get displayWelcomeMessage() { - return ( - (this.thread.messages.length === 0 || this.thread?.messages[0]?.isSelfAuthored) && - super.displayWelcomeMessage - ); + return !this.thread.requested_by_operator; }, }); diff --git a/addons/website_livechat/static/src/embed/thread_service_patch.js b/addons/website_livechat/static/src/embed/thread_service_patch.js new file mode 100644 index 00000000000..f5dce30484b --- /dev/null +++ b/addons/website_livechat/static/src/embed/thread_service_patch.js @@ -0,0 +1,12 @@ +/** @odoo-module */ + +import { ThreadService } from "@mail/core/common/thread_service"; +import { assignDefined } from "@mail/utils/common/misc"; +import { patch } from "@web/core/utils/patch"; + +patch(ThreadService.prototype, { + update(thread, data) { + super.update(thread, data); + assignDefined(thread, data, ["requested_by_operator"]); + }, +}); diff --git a/addons/website_livechat/tests/test_livechat_request.py b/addons/website_livechat/tests/test_livechat_request.py index 47d7274733d..e5d8cb07477 100644 --- a/addons/website_livechat/tests/test_livechat_request.py +++ b/addons/website_livechat/tests/test_livechat_request.py @@ -54,6 +54,7 @@ class TestLivechatRequestHttpCase(tests.HttpCase, TestLivechatCommon): self.assertEqual(len(channel), 1) self.assertEqual(channel.livechat_operator_id, self.operator.partner_id, "Michel Operator should be the operator of this channel.") self.assertEqual(len(channel.message_ids), 0) + self.assertEqual(channel.anonymous_name, f"Visitor #{self.visitor.id} ({self.visitor.country_id.name})") # Operator Sends message self._send_message(channel, self.operator.email, "Hello Again !", author_id=self.operator.partner_id.id)