From b3c231b1b26588bcb0052980d6f68b134c5bb63d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20K=C3=BChn?= Date: Fri, 27 Oct 2023 10:57:33 +0200 Subject: [PATCH] [FIX] mail,*: markup chatbot livechat message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit calendar, im_livechat Before this commit, messages in chatbot conversation were not properly markup. This comes from changes from [1] that added trusted insert. Original code in `Record.insert()` makes a model insertion of the data using the `html` flag. Patches must not override `static insert()` as only the super call is affected by the provided `html` flag. For patches to take account of it, they must instead patch `_insert`, with `_` prefix, which is internally called by original `Record.insert()`. In addition: - `static insert` allows array of data while `static _insert` works with data on single record. Patches were designed with data on single record, so some code were not working properly - Signature of `static insert` has been overloaded with new option `html: true`, so patches must propagate it. They were only propagating `data` and omitting the 2nd paramater, which results in omitting provided `html` thus falling back to `html: false`, resulting to non-escaping message body This commit fixes all model patches to override `static _insert` instead of `static insert`. [1]: https://github.com/odoo/odoo/pull/139501 closes odoo/odoo#140064 Related: odoo/enterprise#49718 Signed-off-by: Sébastien Theys (seb) --- .../static/src/activity/activity_model_patch.js | 10 ++++------ .../static/src/core/common/thread_model_patch.js | 4 ++-- .../static/src/core/web/thread_model_patch.js | 4 ++-- .../static/src/embed/common/message_model_patch.js | 4 ++-- .../static/src/embed/common/thread_model_patch.js | 4 ++-- 5 files changed, 12 insertions(+), 14 deletions(-) diff --git a/addons/calendar/static/src/activity/activity_model_patch.js b/addons/calendar/static/src/activity/activity_model_patch.js index 9500c9232ff..966db2f3789 100644 --- a/addons/calendar/static/src/activity/activity_model_patch.js +++ b/addons/calendar/static/src/activity/activity_model_patch.js @@ -1,15 +1,13 @@ /** @odoo-module */ import { Activity } from "@mail/core/web/activity_model"; +import { assignIn } from "@mail/utils/common/misc"; import { patch } from "@web/core/utils/patch"; patch(Activity, { - insert(data) { - const activity = super.insert(...arguments); - const { calendar_event_id: calendarEventId } = data; - if (calendarEventId) { - activity["calendar_event_id"] = calendarEventId; - } + _insert(data) { + const activity = super._insert(...arguments); + assignIn(activity, data, ["calendar_event_id"]); return activity; }, }); diff --git a/addons/im_livechat/static/src/core/common/thread_model_patch.js b/addons/im_livechat/static/src/core/common/thread_model_patch.js index 68f7d2770c6..3000f7eb8a0 100644 --- a/addons/im_livechat/static/src/core/common/thread_model_patch.js +++ b/addons/im_livechat/static/src/core/common/thread_model_patch.js @@ -6,8 +6,8 @@ import { Thread } from "@mail/core/common/thread_model"; import { patch } from "@web/core/utils/patch"; patch(Thread, { - insert(data) { - const thread = super.insert(data); + _insert(data) { + const thread = super._insert(...arguments); if (thread.type === "livechat") { if (data?.operator_pid) { thread.operator = { diff --git a/addons/im_livechat/static/src/core/web/thread_model_patch.js b/addons/im_livechat/static/src/core/web/thread_model_patch.js index 97c2cc47db3..be2455c29e4 100644 --- a/addons/im_livechat/static/src/core/web/thread_model_patch.js +++ b/addons/im_livechat/static/src/core/web/thread_model_patch.js @@ -6,8 +6,8 @@ import { assignIn } from "@mail/utils/common/misc"; import { patch } from "@web/core/utils/patch"; patch(Thread, { - insert(data) { - const thread = super.insert(data); + _insert(data) { + const thread = super._insert(...arguments); if (thread.type === "livechat") { assignIn(thread, data, ["anonymous_name", "anonymous_country"]); this.store.discuss.livechat.threads.add(thread); diff --git a/addons/im_livechat/static/src/embed/common/message_model_patch.js b/addons/im_livechat/static/src/embed/common/message_model_patch.js index 50d758c9aaa..1415c8457df 100644 --- a/addons/im_livechat/static/src/embed/common/message_model_patch.js +++ b/addons/im_livechat/static/src/embed/common/message_model_patch.js @@ -7,9 +7,9 @@ import { Message } from "@mail/core/common/message_model"; import { patch } from "@web/core/utils/patch"; patch(Message, { - insert(data) { + _insert(data) { const chatbotStep = this.store.Message.get(data)?.chatbotStep; - const message = super.insert(data); + const message = super._insert(...arguments); if (data.chatbotStep) { message.chatbotStep = new ChatbotStep({ ...chatbotStep, ...data.chatbotStep }); } diff --git a/addons/im_livechat/static/src/embed/common/thread_model_patch.js b/addons/im_livechat/static/src/embed/common/thread_model_patch.js index 5ff6cd98977..600d3cd3acd 100644 --- a/addons/im_livechat/static/src/embed/common/thread_model_patch.js +++ b/addons/im_livechat/static/src/embed/common/thread_model_patch.js @@ -10,9 +10,9 @@ import { patch } from "@web/core/utils/patch"; import { session } from "@web/session"; patch(Thread, { - insert(data) { + _insert(data) { const isUnknown = !this.get(data); - const thread = super.insert(...arguments); + const thread = super._insert(...arguments); const livechatService = this.env.services["im_livechat.livechat"]; if (thread.type === "livechat" && isUnknown) { onChange(