From 427074c03aaabc4e6798d9965bce06de4b48b909 Mon Sep 17 00:00:00 2001 From: tsm-odoo Date: Fri, 13 Oct 2023 12:17:20 +0200 Subject: [PATCH] [IMP] im_livechat, website_livechat: improve live chat bundles This commit improves the live chat bundles: - `core` - `common`: hold files that are common to every feature - `web` - `standalone`: hold files for the embed live chat and is splitted in 4 sub-bundles: - `common` - `frontend`: should only be added in the Odoo frontend. - `external`: should only be added outside of Odoo environment (e.g. support page). - `cors`: should only be added when the live chat is requested from a different origin. This will make live chat folder structure closer than the one used in mail and avoid code duplication. task-3537697 closes odoo/odoo#138536 Signed-off-by: Matthieu Stockbauer (tsm) --- addons/im_livechat/__manifest__.py | 34 ++++++----------- addons/im_livechat/controllers/main.py | 9 ++--- .../static/src/core/common/@types/models.d.ts | 5 +++ .../src/core/common/thread_model_patch.js | 37 +++++++++++++++++++ .../src/core/{ => web}/@types/models.d.ts | 1 - .../web}/channel_commands_patch.js | 0 .../{ => web}/channel_invitation_patch.xml | 0 .../{ => web}/channel_member_list_patch.js | 0 .../{ => web}/channel_member_list_patch.xml | 0 .../{ => web}/channel_member_service_patch.js | 0 .../web}/chat_window_patch.js | 0 .../{composer => core/web}/composer_patch.js | 0 .../{composer => core/web}/composer_patch.xml | 0 .../core/{ => web}/discuss_app_model_patch.js | 0 .../discuss_sidebar_categories_livechat.js | 0 .../web}/messaging_menu_patch.js | 0 .../src/core/{ => web}/partner_compare.js | 0 .../web}/suggestion_service_patch.js | 0 .../web}/thread_icon_patch.xml | 0 .../src/core/{ => web}/thread_model_patch.js | 20 ---------- .../core/{ => web}/thread_service_patch.js | 7 ---- .../embed/{core => common}/@types/models.d.ts | 1 - .../{core => common}/autopopup_service.js | 4 +- .../src/embed/{ => common}/boot_helpers.js | 2 +- .../chat_window_container_patch.xml | 0 .../chat_window_patch.js | 4 +- .../chat_window_patch.xml | 0 .../{ => common}/chatbot/chatbot_model.js | 4 +- .../{ => common}/chatbot/chatbot_service.js | 12 +++--- .../chatbot/chatbot_step_model.js | 0 .../embed/{core => common}/composer_patch.js | 2 +- .../{core => common}/disabled_features.js | 0 .../{core_ui => common}/emoji_picker.scss | 0 .../feedback_panel/feedback_panel.js | 4 +- .../feedback_panel/feedback_panel.xml | 0 .../feedback_panel/transcript_sender.js | 2 +- .../feedback_panel/transcript_sender.xml | 0 .../embed/{core => common}/history_service.js | 2 +- .../{core_ui => common}/livechat_button.js | 2 +- .../{core_ui => common}/livechat_button.scss | 0 .../{core_ui => common}/livechat_button.xml | 0 .../src/embed/{ => common}/livechat_data.js | 0 .../{core => common}/livechat_service.js | 2 +- .../{core_ui => embed/common}/message.scss | 0 .../{core => common}/message_model_patch.js | 2 +- .../{core_ui => common}/message_patch.js | 2 +- .../{core_ui => common}/message_patch.xml | 0 .../messaging_service_patch.js | 2 +- .../static/src/embed/{core => common}/misc.js | 0 .../scss/bootstrap_overridden.scss | 0 .../src/embed/{ => common}/scss/shadow.scss | 0 .../embed/{core => common}/thread_actions.js | 2 +- .../{core => common}/thread_model_patch.js | 30 +++------------ .../embed/{core_ui => common}/thread_patch.js | 3 -- .../{core_ui => common}/thread_patch.scss | 0 .../{core_ui => common}/thread_patch.xml | 0 .../{core => common}/thread_service_patch.js | 15 +------- .../static/src/embed/core_ui/message.scss | 4 -- .../static/src/embed/external/boot.js | 6 +-- .../external/bus_parameters_service_patch.js | 2 +- .../static/src/embed/frontend/boot_service.js | 4 +- .../src/embed/frontend/livechat_root.js | 2 +- .../embed/frontend/overlay_container_patch.js | 2 +- .../tests/embed/feedback_panel_tests.js | 2 +- .../static/tests/embed/helper/test_utils.js | 2 +- .../tests/embed/livechat_session_tests.js | 2 +- .../static/src/core/common/thread_service.js | 2 +- addons/website_livechat/__manifest__.py | 4 +- .../{ => common}/livechat_service_patch.js | 2 +- .../embed/{ => common}/thread_model_patch.js | 0 .../{core/@ypes => web/@types}/models.d.ts | 0 .../channel_member_model_patch.js | 0 .../src/{core => web}/persona_model_patch.js | 0 .../src/{core => web}/thread_model_patch.js | 0 .../src/{core_ui => web}/thread_patch.js | 0 .../src/{core_ui => web}/thread_patch.scss | 0 .../src/{core_ui => web}/thread_patch.xml | 0 .../src/{core => web}/thread_service_patch.js | 0 .../website_livechat_notification_handler.js | 0 .../tests/tours/website_livechat_request.js | 6 +-- 80 files changed, 106 insertions(+), 144 deletions(-) create mode 100644 addons/im_livechat/static/src/core/common/@types/models.d.ts create mode 100644 addons/im_livechat/static/src/core/common/thread_model_patch.js rename addons/im_livechat/static/src/core/{ => web}/@types/models.d.ts (88%) rename addons/im_livechat/static/src/{composer => core/web}/channel_commands_patch.js (100%) rename addons/im_livechat/static/src/core/{ => web}/channel_invitation_patch.xml (100%) rename addons/im_livechat/static/src/core/{ => web}/channel_member_list_patch.js (100%) rename addons/im_livechat/static/src/core/{ => web}/channel_member_list_patch.xml (100%) rename addons/im_livechat/static/src/core/{ => web}/channel_member_service_patch.js (100%) rename addons/im_livechat/static/src/{chat_window => core/web}/chat_window_patch.js (100%) rename addons/im_livechat/static/src/{composer => core/web}/composer_patch.js (100%) rename addons/im_livechat/static/src/{composer => core/web}/composer_patch.xml (100%) rename addons/im_livechat/static/src/core/{ => web}/discuss_app_model_patch.js (100%) rename addons/im_livechat/static/src/{discuss_app => core/web}/discuss_sidebar_categories_livechat.js (100%) rename addons/im_livechat/static/src/{messaging_menu => core/web}/messaging_menu_patch.js (100%) rename addons/im_livechat/static/src/core/{ => web}/partner_compare.js (100%) rename addons/im_livechat/static/src/{composer => core/web}/suggestion_service_patch.js (100%) rename addons/im_livechat/static/src/{discuss_app => core/web}/thread_icon_patch.xml (100%) rename addons/im_livechat/static/src/core/{ => web}/thread_model_patch.js (81%) rename addons/im_livechat/static/src/core/{ => web}/thread_service_patch.js (91%) rename addons/im_livechat/static/src/embed/{core => common}/@types/models.d.ts (84%) rename addons/im_livechat/static/src/embed/{core => common}/autopopup_service.js (92%) rename addons/im_livechat/static/src/embed/{ => common}/boot_helpers.js (96%) rename addons/im_livechat/static/src/embed/{chat_window => common}/chat_window_container_patch.xml (100%) rename addons/im_livechat/static/src/embed/{chat_window => common}/chat_window_patch.js (86%) rename addons/im_livechat/static/src/embed/{chat_window => common}/chat_window_patch.xml (100%) rename addons/im_livechat/static/src/embed/{ => common}/chatbot/chatbot_model.js (81%) rename addons/im_livechat/static/src/embed/{ => common}/chatbot/chatbot_service.js (96%) rename addons/im_livechat/static/src/embed/{ => common}/chatbot/chatbot_step_model.js (100%) rename addons/im_livechat/static/src/embed/{core => common}/composer_patch.js (85%) rename addons/im_livechat/static/src/embed/{core => common}/disabled_features.js (100%) rename addons/im_livechat/static/src/embed/{core_ui => common}/emoji_picker.scss (100%) rename addons/im_livechat/static/src/embed/{ => common}/feedback_panel/feedback_panel.js (88%) rename addons/im_livechat/static/src/embed/{ => common}/feedback_panel/feedback_panel.xml (100%) rename addons/im_livechat/static/src/embed/{ => common}/feedback_panel/transcript_sender.js (94%) rename addons/im_livechat/static/src/embed/{ => common}/feedback_panel/transcript_sender.xml (100%) rename addons/im_livechat/static/src/embed/{core => common}/history_service.js (96%) rename addons/im_livechat/static/src/embed/{core_ui => common}/livechat_button.js (96%) rename addons/im_livechat/static/src/embed/{core_ui => common}/livechat_button.scss (100%) rename addons/im_livechat/static/src/embed/{core_ui => common}/livechat_button.xml (100%) rename addons/im_livechat/static/src/embed/{ => common}/livechat_data.js (100%) rename addons/im_livechat/static/src/embed/{core => common}/livechat_service.js (99%) rename addons/im_livechat/static/src/{core_ui => embed/common}/message.scss (100%) rename addons/im_livechat/static/src/embed/{core => common}/message_model_patch.js (84%) rename addons/im_livechat/static/src/embed/{core_ui => common}/message_patch.js (82%) rename addons/im_livechat/static/src/embed/{core_ui => common}/message_patch.xml (100%) rename addons/im_livechat/static/src/embed/{core => common}/messaging_service_patch.js (90%) rename addons/im_livechat/static/src/embed/{core => common}/misc.js (100%) rename addons/im_livechat/static/src/embed/{ => common}/scss/bootstrap_overridden.scss (100%) rename addons/im_livechat/static/src/embed/{ => common}/scss/shadow.scss (100%) rename addons/im_livechat/static/src/embed/{core => common}/thread_actions.js (94%) rename addons/im_livechat/static/src/embed/{core => common}/thread_model_patch.js (72%) rename addons/im_livechat/static/src/embed/{core_ui => common}/thread_patch.js (70%) rename addons/im_livechat/static/src/embed/{core_ui => common}/thread_patch.scss (100%) rename addons/im_livechat/static/src/embed/{core_ui => common}/thread_patch.xml (100%) rename addons/im_livechat/static/src/embed/{core => common}/thread_service_patch.js (73%) delete mode 100644 addons/im_livechat/static/src/embed/core_ui/message.scss rename addons/website_livechat/static/src/embed/{ => common}/livechat_service_patch.js (83%) rename addons/website_livechat/static/src/embed/{ => common}/thread_model_patch.js (100%) rename addons/website_livechat/static/src/{core/@ypes => web/@types}/models.d.ts (100%) rename addons/website_livechat/static/src/{core => web}/channel_member_model_patch.js (100%) rename addons/website_livechat/static/src/{core => web}/persona_model_patch.js (100%) rename addons/website_livechat/static/src/{core => web}/thread_model_patch.js (100%) rename addons/website_livechat/static/src/{core_ui => web}/thread_patch.js (100%) rename addons/website_livechat/static/src/{core_ui => web}/thread_patch.scss (100%) rename addons/website_livechat/static/src/{core_ui => web}/thread_patch.xml (100%) rename addons/website_livechat/static/src/{core => web}/thread_service_patch.js (100%) rename addons/website_livechat/static/src/{core => web}/website_livechat_notification_handler.js (100%) diff --git a/addons/im_livechat/__manifest__.py b/addons/im_livechat/__manifest__.py index c79a7e56b3f..8e4bc5d390a 100644 --- a/addons/im_livechat/__manifest__.py +++ b/addons/im_livechat/__manifest__.py @@ -64,7 +64,7 @@ Help your customers with this chat, and analyse their feedback. 'web.assets_frontend': [ 'web/static/src/views/fields/file_handler.*', 'web/static/src/views/fields/formatters.js', - ('include', 'im_livechat.assets_core'), + ('include', 'im_livechat.assets_embed_core'), 'im_livechat/static/src/embed/frontend/**/*', ], 'web.assets_backend': [ @@ -72,14 +72,10 @@ Help your customers with this chat, and analyse their feedback. 'im_livechat/static/src/js/im_livechat_chatbot_steps_one2many.js', 'im_livechat/static/src/js/im_livechat_chatbot_script_answers_m2m.js', 'im_livechat/static/src/views/**/*', - 'im_livechat/static/src/chat_window/**/*', - 'im_livechat/static/src/composer/**/*', - 'im_livechat/static/src/core/**/*', - 'im_livechat/static/src/core_ui/**/*', - 'im_livechat/static/src/discuss_app/**/*', - 'im_livechat/static/src/messaging_menu/**/*', 'im_livechat/static/src/scss/im_livechat_history.scss', 'im_livechat/static/src/scss/im_livechat_form.scss', + 'im_livechat/static/src/core/common/**/*', + 'im_livechat/static/src/core/web/**/*', ], 'web.tests_assets': [ 'im_livechat/static/tests/helpers/**/*.js', @@ -93,7 +89,7 @@ Help your customers with this chat, and analyse their feedback. 'web.assets_tests': [ 'im_livechat/static/tests/tours/**/*', ], - 'im_livechat.assets_core': [ + 'im_livechat.assets_embed_core': [ 'web/static/lib/odoo_ui_icons/style.css', 'web/static/src/scss/ui.scss', 'mail/static/src/core/common/**/*', @@ -102,17 +98,13 @@ Help your customers with this chat, and analyse their feedback. 'mail/static/src/discuss/typing/**/*', 'mail/static/src/utils/common/**/*', ('remove', 'mail/static/src/**/*.dark.scss'), - - 'im_livechat/static/src/embed/**/*', - 'im_livechat/static/src/embed/livechat_data.js', - ('remove', 'im_livechat/static/src/embed/frontend/**/*'), - ('remove', 'im_livechat/static/src/embed/external/**/*'), - ('remove', 'im_livechat/static/src/embed/cors/**/*'), + 'im_livechat/static/src/core/common/**/*', + 'im_livechat/static/src/embed/common/**/*', ], - 'im_livechat.assets_embed': [ + 'im_livechat.assets_embed_external': [ 'web/static/lib/jquery/jquery.js', 'web/static/src/libs/fontawesome/css/font-awesome.css', - 'im_livechat/static/src/embed/scss/bootstrap_overridden.scss', + 'im_livechat/static/src/embed/common/scss/bootstrap_overridden.scss', ('include', 'web._assets_helpers'), ('include', 'web._assets_backend_helpers'), 'web/static/src/scss/pre_variables.scss', @@ -130,11 +122,11 @@ Help your customers with this chat, and analyse their feedback. 'bus/static/src/workers/websocket_worker.js', 'bus/static/src/workers/websocket_worker_utils.js', - ('include', 'im_livechat.assets_core'), + ('include', 'im_livechat.assets_embed_core'), 'im_livechat/static/src/embed/external/**/*', ], - 'im_livechat.assets_cors': [ - ('include', 'im_livechat.assets_embed'), + 'im_livechat.assets_embed_cors': [ + ('include', 'im_livechat.assets_embed_external'), 'im_livechat/static/src/embed/cors/**/*', ], 'im_livechat.embed_test_assets': [ @@ -142,9 +134,7 @@ Help your customers with this chat, and analyse their feedback. ('remove', 'web/static/tests/mock_server_tests.js'), ('remove', 'im_livechat/static/**'), 'im_livechat/static/tests/helpers/**', - 'im_livechat/static/src/embed/**/*', - ('remove', 'im_livechat/static/src/embed/frontend/**/*'), - ('remove', 'im_livechat/static/src/embed/external/**/*'), + ('include', 'im_livechat.assets_embed_core'), ], 'im_livechat.qunit_embed_suite': [ 'im_livechat/static/tests/embed/**/*', diff --git a/addons/im_livechat/controllers/main.py b/addons/im_livechat/controllers/main.py index 4a4c0f9f335..0f5e649628d 100644 --- a/addons/im_livechat/controllers/main.py +++ b/addons/im_livechat/controllers/main.py @@ -22,12 +22,9 @@ class LivechatController(http.Controller): serves javascript since the css will be fetched by the shadow DOM of the livechat to avoid conflicts. """ - bundle = 'im_livechat.assets_embed' - asset = request.env["ir.qweb"]._get_asset_bundle(bundle) if ext == 'css': raise request.not_found() - stream = request.env['ir.binary']._get_stream_from(asset.js()) - return stream.get_response() + return self.assets_embed(ext, **kwargs) @http.route('/im_livechat/assets_embed.', type='http', auth='public', cors='*') def assets_embed(self, ext, **kwargs): @@ -35,9 +32,9 @@ class LivechatController(http.Controller): # assets to enable the redirection of routes to the CORS controller. headers = request.httprequest.headers origin_url = urlsplit(headers.get('referer')) - bundle = 'im_livechat.assets_embed' + bundle = 'im_livechat.assets_embed_external' if origin_url.netloc != headers.get('host') or origin_url.scheme != request.httprequest.scheme: - bundle = 'im_livechat.assets_cors' + bundle = 'im_livechat.assets_embed_cors' asset = request.env["ir.qweb"]._get_asset_bundle(bundle) if ext not in ('css', 'js'): raise request.not_found() diff --git a/addons/im_livechat/static/src/core/common/@types/models.d.ts b/addons/im_livechat/static/src/core/common/@types/models.d.ts new file mode 100644 index 00000000000..7d90be57e2e --- /dev/null +++ b/addons/im_livechat/static/src/core/common/@types/models.d.ts @@ -0,0 +1,5 @@ +declare module "models" { + export interface Thread { + operator: Persona, + } +} 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 new file mode 100644 index 00000000000..68f7d2770c6 --- /dev/null +++ b/addons/im_livechat/static/src/core/common/thread_model_patch.js @@ -0,0 +1,37 @@ +/* @odoo-module */ + +import { Record } from "@mail/core/common/record"; +import { Thread } from "@mail/core/common/thread_model"; + +import { patch } from "@web/core/utils/patch"; + +patch(Thread, { + insert(data) { + const thread = super.insert(data); + if (thread.type === "livechat") { + if (data?.operator_pid) { + thread.operator = { + type: "partner", + id: data.operator_pid[0], + name: data.operator_pid[1], + }; + } + } + return thread; + }, +}); + +patch(Thread.prototype, { + setup() { + super.setup(); + this.operator = Record.one("Persona"); + }, + + get typesAllowingCalls() { + return super.typesAllowingCalls.concat(["livechat"]); + }, + + get isChatChannel() { + return this.type === "livechat" || super.isChatChannel; + }, +}); diff --git a/addons/im_livechat/static/src/core/@types/models.d.ts b/addons/im_livechat/static/src/core/web/@types/models.d.ts similarity index 88% rename from addons/im_livechat/static/src/core/@types/models.d.ts rename to addons/im_livechat/static/src/core/web/@types/models.d.ts index c53e11abc92..ad88a19f34d 100644 --- a/addons/im_livechat/static/src/core/@types/models.d.ts +++ b/addons/im_livechat/static/src/core/web/@types/models.d.ts @@ -5,6 +5,5 @@ declare module "models" { export interface Thread { anonymous_country: Object, anonymous_name: String, - operator: Persona, } } diff --git a/addons/im_livechat/static/src/composer/channel_commands_patch.js b/addons/im_livechat/static/src/core/web/channel_commands_patch.js similarity index 100% rename from addons/im_livechat/static/src/composer/channel_commands_patch.js rename to addons/im_livechat/static/src/core/web/channel_commands_patch.js diff --git a/addons/im_livechat/static/src/core/channel_invitation_patch.xml b/addons/im_livechat/static/src/core/web/channel_invitation_patch.xml similarity index 100% rename from addons/im_livechat/static/src/core/channel_invitation_patch.xml rename to addons/im_livechat/static/src/core/web/channel_invitation_patch.xml diff --git a/addons/im_livechat/static/src/core/channel_member_list_patch.js b/addons/im_livechat/static/src/core/web/channel_member_list_patch.js similarity index 100% rename from addons/im_livechat/static/src/core/channel_member_list_patch.js rename to addons/im_livechat/static/src/core/web/channel_member_list_patch.js diff --git a/addons/im_livechat/static/src/core/channel_member_list_patch.xml b/addons/im_livechat/static/src/core/web/channel_member_list_patch.xml similarity index 100% rename from addons/im_livechat/static/src/core/channel_member_list_patch.xml rename to addons/im_livechat/static/src/core/web/channel_member_list_patch.xml diff --git a/addons/im_livechat/static/src/core/channel_member_service_patch.js b/addons/im_livechat/static/src/core/web/channel_member_service_patch.js similarity index 100% rename from addons/im_livechat/static/src/core/channel_member_service_patch.js rename to addons/im_livechat/static/src/core/web/channel_member_service_patch.js diff --git a/addons/im_livechat/static/src/chat_window/chat_window_patch.js b/addons/im_livechat/static/src/core/web/chat_window_patch.js similarity index 100% rename from addons/im_livechat/static/src/chat_window/chat_window_patch.js rename to addons/im_livechat/static/src/core/web/chat_window_patch.js diff --git a/addons/im_livechat/static/src/composer/composer_patch.js b/addons/im_livechat/static/src/core/web/composer_patch.js similarity index 100% rename from addons/im_livechat/static/src/composer/composer_patch.js rename to addons/im_livechat/static/src/core/web/composer_patch.js diff --git a/addons/im_livechat/static/src/composer/composer_patch.xml b/addons/im_livechat/static/src/core/web/composer_patch.xml similarity index 100% rename from addons/im_livechat/static/src/composer/composer_patch.xml rename to addons/im_livechat/static/src/core/web/composer_patch.xml diff --git a/addons/im_livechat/static/src/core/discuss_app_model_patch.js b/addons/im_livechat/static/src/core/web/discuss_app_model_patch.js similarity index 100% rename from addons/im_livechat/static/src/core/discuss_app_model_patch.js rename to addons/im_livechat/static/src/core/web/discuss_app_model_patch.js diff --git a/addons/im_livechat/static/src/discuss_app/discuss_sidebar_categories_livechat.js b/addons/im_livechat/static/src/core/web/discuss_sidebar_categories_livechat.js similarity index 100% rename from addons/im_livechat/static/src/discuss_app/discuss_sidebar_categories_livechat.js rename to addons/im_livechat/static/src/core/web/discuss_sidebar_categories_livechat.js diff --git a/addons/im_livechat/static/src/messaging_menu/messaging_menu_patch.js b/addons/im_livechat/static/src/core/web/messaging_menu_patch.js similarity index 100% rename from addons/im_livechat/static/src/messaging_menu/messaging_menu_patch.js rename to addons/im_livechat/static/src/core/web/messaging_menu_patch.js diff --git a/addons/im_livechat/static/src/core/partner_compare.js b/addons/im_livechat/static/src/core/web/partner_compare.js similarity index 100% rename from addons/im_livechat/static/src/core/partner_compare.js rename to addons/im_livechat/static/src/core/web/partner_compare.js diff --git a/addons/im_livechat/static/src/composer/suggestion_service_patch.js b/addons/im_livechat/static/src/core/web/suggestion_service_patch.js similarity index 100% rename from addons/im_livechat/static/src/composer/suggestion_service_patch.js rename to addons/im_livechat/static/src/core/web/suggestion_service_patch.js diff --git a/addons/im_livechat/static/src/discuss_app/thread_icon_patch.xml b/addons/im_livechat/static/src/core/web/thread_icon_patch.xml similarity index 100% rename from addons/im_livechat/static/src/discuss_app/thread_icon_patch.xml rename to addons/im_livechat/static/src/core/web/thread_icon_patch.xml diff --git a/addons/im_livechat/static/src/core/thread_model_patch.js b/addons/im_livechat/static/src/core/web/thread_model_patch.js similarity index 81% rename from addons/im_livechat/static/src/core/thread_model_patch.js rename to addons/im_livechat/static/src/core/web/thread_model_patch.js index d183a4a1c97..97c2cc47db3 100644 --- a/addons/im_livechat/static/src/core/thread_model_patch.js +++ b/addons/im_livechat/static/src/core/web/thread_model_patch.js @@ -1,6 +1,5 @@ /* @odoo-module */ -import { Record } from "@mail/core/common/record"; import { Thread } from "@mail/core/common/thread_model"; import { assignIn } from "@mail/utils/common/misc"; @@ -11,13 +10,6 @@ patch(Thread, { const thread = super.insert(data); if (thread.type === "livechat") { assignIn(thread, data, ["anonymous_name", "anonymous_country"]); - if (data?.operator_pid) { - thread.operator = { - type: "partner", - id: data.operator_pid[0], - displayName: data.operator_pid[1], - }; - } this.store.discuss.livechat.threads.add(thread); this.env.services["mail.thread"].sortChannels(); } @@ -26,22 +18,10 @@ patch(Thread, { }); patch(Thread.prototype, { - setup() { - super.setup(); - this.operator = Record.one("Persona"); - }, - get typesAllowingCalls() { - return super.typesAllowingCalls.concat(["livechat"]); - }, - get hasMemberList() { return this.type === "livechat" || super.hasMemberList; }, - get isChatChannel() { - return this.type === "livechat" || super.isChatChannel; - }, - get correspondents() { return super.correspondents.filter((correspondent) => !correspondent.is_bot); }, diff --git a/addons/im_livechat/static/src/core/thread_service_patch.js b/addons/im_livechat/static/src/core/web/thread_service_patch.js similarity index 91% rename from addons/im_livechat/static/src/core/thread_service_patch.js rename to addons/im_livechat/static/src/core/web/thread_service_patch.js index bb493a73b4b..52e3147943d 100644 --- a/addons/im_livechat/static/src/core/thread_service_patch.js +++ b/addons/im_livechat/static/src/core/web/thread_service_patch.js @@ -28,13 +28,6 @@ patch(ThreadService.prototype, { return super.canUnpin(thread); }, - getCounter(thread) { - if (thread.type === "livechat") { - return thread.message_unread_counter; - } - return super.getCounter(thread); - }, - sortChannels() { super.sortChannels(); // Live chats are sorted by most recent interest date time in the sidebar. diff --git a/addons/im_livechat/static/src/embed/core/@types/models.d.ts b/addons/im_livechat/static/src/embed/common/@types/models.d.ts similarity index 84% rename from addons/im_livechat/static/src/embed/core/@types/models.d.ts rename to addons/im_livechat/static/src/embed/common/@types/models.d.ts index 38d62b77f51..2a32d997e96 100644 --- a/addons/im_livechat/static/src/embed/core/@types/models.d.ts +++ b/addons/im_livechat/static/src/embed/common/@types/models.d.ts @@ -2,6 +2,5 @@ declare module "models" { export interface Thread { chatbotTypingMessage: Message, livechatWelcomeMessage: Message, - operator: Persona, } } diff --git a/addons/im_livechat/static/src/embed/core/autopopup_service.js b/addons/im_livechat/static/src/embed/common/autopopup_service.js similarity index 92% rename from addons/im_livechat/static/src/embed/core/autopopup_service.js rename to addons/im_livechat/static/src/embed/common/autopopup_service.js index fba82368cd8..c116d3fb4f4 100644 --- a/addons/im_livechat/static/src/embed/core/autopopup_service.js +++ b/addons/im_livechat/static/src/embed/common/autopopup_service.js @@ -10,8 +10,8 @@ export class AutopopupService { /** * @param {import("@web/env").OdooEnv} env * @param {{ - * "im_livechat.chatbot": import("@im_livechat/embed/chatbot/chatbot_service").ChatBotService, - * "im_livechat.livechat": import("@im_livechat/embed/core/livechat_service").LivechatService, + * "im_livechat.chatbot": import("@im_livechat/embed/common/chatbot/chatbot_service").ChatBotService, + * "im_livechat.livechat": import("@im_livechat/embed/common/livechat_service").LivechatService, * "mail.thread": import("@mail/core/common/thread_service").ThreadService, * "mail.store": import("@mail/core/common/store_service").Store, * ui: typeof import("@web/core/ui/ui_service").uiService.start, diff --git a/addons/im_livechat/static/src/embed/boot_helpers.js b/addons/im_livechat/static/src/embed/common/boot_helpers.js similarity index 96% rename from addons/im_livechat/static/src/embed/boot_helpers.js rename to addons/im_livechat/static/src/embed/common/boot_helpers.js index c153e6ffdd3..4966860a2a3 100644 --- a/addons/im_livechat/static/src/embed/boot_helpers.js +++ b/addons/im_livechat/static/src/embed/common/boot_helpers.js @@ -1,6 +1,6 @@ /* @odoo-module */ -import { serverUrl } from "@im_livechat/embed/livechat_data"; +import { serverUrl } from "@im_livechat/embed/common/livechat_data"; async function loadFont(name, url) { await document.fonts.ready; diff --git a/addons/im_livechat/static/src/embed/chat_window/chat_window_container_patch.xml b/addons/im_livechat/static/src/embed/common/chat_window_container_patch.xml similarity index 100% rename from addons/im_livechat/static/src/embed/chat_window/chat_window_container_patch.xml rename to addons/im_livechat/static/src/embed/common/chat_window_container_patch.xml diff --git a/addons/im_livechat/static/src/embed/chat_window/chat_window_patch.js b/addons/im_livechat/static/src/embed/common/chat_window_patch.js similarity index 86% rename from addons/im_livechat/static/src/embed/chat_window/chat_window_patch.js rename to addons/im_livechat/static/src/embed/common/chat_window_patch.js index 7c9fa7ff540..c4b7ad696d6 100644 --- a/addons/im_livechat/static/src/embed/chat_window/chat_window_patch.js +++ b/addons/im_livechat/static/src/embed/common/chat_window_patch.js @@ -1,7 +1,7 @@ /* @odoo-module */ -import { SESSION_STATE } from "@im_livechat/embed/core/livechat_service"; -import { FeedbackPanel } from "@im_livechat/embed/feedback_panel/feedback_panel"; +import { SESSION_STATE } from "@im_livechat/embed/common/livechat_service"; +import { FeedbackPanel } from "@im_livechat/embed/common/feedback_panel/feedback_panel"; import { ChatWindow } from "@mail/core/common/chat_window"; diff --git a/addons/im_livechat/static/src/embed/chat_window/chat_window_patch.xml b/addons/im_livechat/static/src/embed/common/chat_window_patch.xml similarity index 100% rename from addons/im_livechat/static/src/embed/chat_window/chat_window_patch.xml rename to addons/im_livechat/static/src/embed/common/chat_window_patch.xml diff --git a/addons/im_livechat/static/src/embed/chatbot/chatbot_model.js b/addons/im_livechat/static/src/embed/common/chatbot/chatbot_model.js similarity index 81% rename from addons/im_livechat/static/src/embed/chatbot/chatbot_model.js rename to addons/im_livechat/static/src/embed/common/chatbot/chatbot_model.js index 067c7c301ec..425ecaaa616 100644 --- a/addons/im_livechat/static/src/embed/chatbot/chatbot_model.js +++ b/addons/im_livechat/static/src/embed/common/chatbot/chatbot_model.js @@ -7,7 +7,7 @@ import { assignDefined } from "@mail/utils/common/misc"; * @property {string} chatbot_name * @property {number} chatbot_operator_partner_id * @property {number} chatbot_script_id - * @property {import("@im_livechat/embed/chatbot/chatbot_step_model").IChatbotStep[]} chatbot_welcome_steps + * @property {import("@im_livechat/embed/common/chatbot/chatbot_step_model").IChatbotStep[]} chatbot_welcome_steps * @property {number} [welcome_step_index] */ @@ -20,7 +20,7 @@ export class Chatbot { welcomeStepIndex = 0; /** @type {number} */ scriptId; - /** @type {import("@im_livechat/embed/chatbot/chatbot_step_model").IChatbotStep[]} */ + /** @type {import("@im_livechat/embed/common/chatbot/chatbot_step_model").IChatbotStep[]} */ welcomeSteps = []; /** diff --git a/addons/im_livechat/static/src/embed/chatbot/chatbot_service.js b/addons/im_livechat/static/src/embed/common/chatbot/chatbot_service.js similarity index 96% rename from addons/im_livechat/static/src/embed/chatbot/chatbot_service.js rename to addons/im_livechat/static/src/embed/common/chatbot/chatbot_service.js index d84499d71c8..de4e382289c 100644 --- a/addons/im_livechat/static/src/embed/chatbot/chatbot_service.js +++ b/addons/im_livechat/static/src/embed/common/chatbot/chatbot_service.js @@ -1,8 +1,8 @@ /* @odoo-module */ -import { Chatbot } from "@im_livechat/embed/chatbot/chatbot_model"; -import { ChatbotStep } from "@im_livechat/embed/chatbot/chatbot_step_model"; -import { SESSION_STATE } from "@im_livechat/embed/core/livechat_service"; +import { Chatbot } from "@im_livechat/embed/common/chatbot/chatbot_model"; +import { ChatbotStep } from "@im_livechat/embed/common/chatbot/chatbot_step_model"; +import { SESSION_STATE } from "@im_livechat/embed/common/livechat_service"; import { EventBus, markup, reactive } from "@odoo/owl"; @@ -19,9 +19,9 @@ export class ChatBotService { // Time to wait without user input before considering a multi line // step as completed. MULTILINE_STEP_DEBOUNCE_DELAY = 10_000; - /** @type {import("@im_livechat/embed/chatbot/chatbot_model").Chatbot} */ + /** @type {import("@im_livechat/embed/common/chatbot/chatbot_model").Chatbot} */ chatbot; - /** @type {import("@im_livechat/embed/chatbot/chatbot_step_model").ChatbotStep} */ + /** @type {import("@im_livechat/embed/common/chatbot/chatbot_step_model").ChatbotStep} */ currentStep; /** @type {number} */ nextStepTimeout; @@ -38,7 +38,7 @@ export class ChatBotService { /** * @param {import("@web/env").OdooEnv} env * @param {{ - * "im_livechat.livechat": import("@im_livechat/embed/core/livechat_service").LivechatService, + * "im_livechat.livechat": import("@im_livechat/embed/common/livechat_service").LivechatService, * "mail.message": import("@mail/core/common/message_service").MessageService, * "mail.store": import("@mail/core/common/store_service").Store, * rpc: typeof import("@web/core/network/rpc_service").rpcService.start, diff --git a/addons/im_livechat/static/src/embed/chatbot/chatbot_step_model.js b/addons/im_livechat/static/src/embed/common/chatbot/chatbot_step_model.js similarity index 100% rename from addons/im_livechat/static/src/embed/chatbot/chatbot_step_model.js rename to addons/im_livechat/static/src/embed/common/chatbot/chatbot_step_model.js diff --git a/addons/im_livechat/static/src/embed/core/composer_patch.js b/addons/im_livechat/static/src/embed/common/composer_patch.js similarity index 85% rename from addons/im_livechat/static/src/embed/core/composer_patch.js rename to addons/im_livechat/static/src/embed/common/composer_patch.js index 56cc7d93d41..5a43ff6b458 100644 --- a/addons/im_livechat/static/src/embed/core/composer_patch.js +++ b/addons/im_livechat/static/src/embed/common/composer_patch.js @@ -1,6 +1,6 @@ /* @odoo-module */ -import { options } from "@im_livechat/embed/livechat_data"; +import { options } from "@im_livechat/embed/common/livechat_data"; import { Composer } from "@mail/core/common/composer"; diff --git a/addons/im_livechat/static/src/embed/core/disabled_features.js b/addons/im_livechat/static/src/embed/common/disabled_features.js similarity index 100% rename from addons/im_livechat/static/src/embed/core/disabled_features.js rename to addons/im_livechat/static/src/embed/common/disabled_features.js diff --git a/addons/im_livechat/static/src/embed/core_ui/emoji_picker.scss b/addons/im_livechat/static/src/embed/common/emoji_picker.scss similarity index 100% rename from addons/im_livechat/static/src/embed/core_ui/emoji_picker.scss rename to addons/im_livechat/static/src/embed/common/emoji_picker.scss diff --git a/addons/im_livechat/static/src/embed/feedback_panel/feedback_panel.js b/addons/im_livechat/static/src/embed/common/feedback_panel/feedback_panel.js similarity index 88% rename from addons/im_livechat/static/src/embed/feedback_panel/feedback_panel.js rename to addons/im_livechat/static/src/embed/common/feedback_panel/feedback_panel.js index 48db5a36d2c..1639418428a 100644 --- a/addons/im_livechat/static/src/embed/feedback_panel/feedback_panel.js +++ b/addons/im_livechat/static/src/embed/common/feedback_panel/feedback_panel.js @@ -1,7 +1,7 @@ /* @odoo-module */ -import { RATING } from "@im_livechat/embed/core/livechat_service"; -import { TranscriptSender } from "@im_livechat/embed/feedback_panel/transcript_sender"; +import { RATING } from "@im_livechat/embed/common/livechat_service"; +import { TranscriptSender } from "@im_livechat/embed/common/feedback_panel/transcript_sender"; import { Component, useState } from "@odoo/owl"; diff --git a/addons/im_livechat/static/src/embed/feedback_panel/feedback_panel.xml b/addons/im_livechat/static/src/embed/common/feedback_panel/feedback_panel.xml similarity index 100% rename from addons/im_livechat/static/src/embed/feedback_panel/feedback_panel.xml rename to addons/im_livechat/static/src/embed/common/feedback_panel/feedback_panel.xml diff --git a/addons/im_livechat/static/src/embed/feedback_panel/transcript_sender.js b/addons/im_livechat/static/src/embed/common/feedback_panel/transcript_sender.js similarity index 94% rename from addons/im_livechat/static/src/embed/feedback_panel/transcript_sender.js rename to addons/im_livechat/static/src/embed/common/feedback_panel/transcript_sender.js index 7c7ef140c9f..8ecc8d0e11e 100644 --- a/addons/im_livechat/static/src/embed/feedback_panel/transcript_sender.js +++ b/addons/im_livechat/static/src/embed/common/feedback_panel/transcript_sender.js @@ -1,6 +1,6 @@ /* @odoo-module */ -import { isValidEmail } from "@im_livechat/embed/core/misc"; +import { isValidEmail } from "@im_livechat/embed/common/misc"; import { Component, useState } from "@odoo/owl"; diff --git a/addons/im_livechat/static/src/embed/feedback_panel/transcript_sender.xml b/addons/im_livechat/static/src/embed/common/feedback_panel/transcript_sender.xml similarity index 100% rename from addons/im_livechat/static/src/embed/feedback_panel/transcript_sender.xml rename to addons/im_livechat/static/src/embed/common/feedback_panel/transcript_sender.xml diff --git a/addons/im_livechat/static/src/embed/core/history_service.js b/addons/im_livechat/static/src/embed/common/history_service.js similarity index 96% rename from addons/im_livechat/static/src/embed/core/history_service.js rename to addons/im_livechat/static/src/embed/common/history_service.js index d80eaf18e37..b72d2ee051c 100644 --- a/addons/im_livechat/static/src/embed/core/history_service.js +++ b/addons/im_livechat/static/src/embed/common/history_service.js @@ -13,7 +13,7 @@ export class HistoryService { this.rpc = services.rpc; /** @type {ReturnType} */ this.busService = services.bus_service; - /** @type {import("@im_livechat/embed/core/livechat_service").LivechatService} */ + /** @type {import("@im_livechat/embed/common/livechat_service").LivechatService} */ this.livechatService = services["im_livechat.livechat"]; } diff --git a/addons/im_livechat/static/src/embed/core_ui/livechat_button.js b/addons/im_livechat/static/src/embed/common/livechat_button.js similarity index 96% rename from addons/im_livechat/static/src/embed/core_ui/livechat_button.js rename to addons/im_livechat/static/src/embed/common/livechat_button.js index 73071ac29f2..dbe0a5c92ae 100644 --- a/addons/im_livechat/static/src/embed/core_ui/livechat_button.js +++ b/addons/im_livechat/static/src/embed/common/livechat_button.js @@ -35,7 +35,7 @@ export class LivechatButton extends Component { setup() { this.store = useState(useService("mail.store")); - /** @type {import('@im_livechat/embed/core/livechat_service').LivechatService} */ + /** @type {import('@im_livechat/embed/common/livechat_service').LivechatService} */ this.livechatService = useState(useService("im_livechat.livechat")); /** @type {import('@mail/core/common/thread_service').ThreadService} */ this.threadService = useService("mail.thread"); diff --git a/addons/im_livechat/static/src/embed/core_ui/livechat_button.scss b/addons/im_livechat/static/src/embed/common/livechat_button.scss similarity index 100% rename from addons/im_livechat/static/src/embed/core_ui/livechat_button.scss rename to addons/im_livechat/static/src/embed/common/livechat_button.scss diff --git a/addons/im_livechat/static/src/embed/core_ui/livechat_button.xml b/addons/im_livechat/static/src/embed/common/livechat_button.xml similarity index 100% rename from addons/im_livechat/static/src/embed/core_ui/livechat_button.xml rename to addons/im_livechat/static/src/embed/common/livechat_button.xml diff --git a/addons/im_livechat/static/src/embed/livechat_data.js b/addons/im_livechat/static/src/embed/common/livechat_data.js similarity index 100% rename from addons/im_livechat/static/src/embed/livechat_data.js rename to addons/im_livechat/static/src/embed/common/livechat_data.js diff --git a/addons/im_livechat/static/src/embed/core/livechat_service.js b/addons/im_livechat/static/src/embed/common/livechat_service.js similarity index 99% rename from addons/im_livechat/static/src/embed/core/livechat_service.js rename to addons/im_livechat/static/src/embed/common/livechat_service.js index ed3092ce524..528fdd2779f 100644 --- a/addons/im_livechat/static/src/embed/core/livechat_service.js +++ b/addons/im_livechat/static/src/embed/common/livechat_service.js @@ -14,7 +14,7 @@ import { session } from "@web/session"; * @typedef LivechatRule * @property {"auto_popup"|undefined} [action] * @property {number?} [auto_popup_timer] - * @property {import("@im_livechat/embed/chatbot/chatbot_model").IChatbot} [chatbot] + * @property {import("@im_livechat/embed/common/chatbot/chatbot_model").IChatbot} [chatbot] */ export const RATING = Object.freeze({ diff --git a/addons/im_livechat/static/src/core_ui/message.scss b/addons/im_livechat/static/src/embed/common/message.scss similarity index 100% rename from addons/im_livechat/static/src/core_ui/message.scss rename to addons/im_livechat/static/src/embed/common/message.scss diff --git a/addons/im_livechat/static/src/embed/core/message_model_patch.js b/addons/im_livechat/static/src/embed/common/message_model_patch.js similarity index 84% rename from addons/im_livechat/static/src/embed/core/message_model_patch.js rename to addons/im_livechat/static/src/embed/common/message_model_patch.js index cf5e530e65e..50d758c9aaa 100644 --- a/addons/im_livechat/static/src/embed/core/message_model_patch.js +++ b/addons/im_livechat/static/src/embed/common/message_model_patch.js @@ -1,6 +1,6 @@ /* @odoo-module */ -import { ChatbotStep } from "@im_livechat/embed/chatbot/chatbot_step_model"; +import { ChatbotStep } from "@im_livechat/embed/common/chatbot/chatbot_step_model"; import { Message } from "@mail/core/common/message_model"; diff --git a/addons/im_livechat/static/src/embed/core_ui/message_patch.js b/addons/im_livechat/static/src/embed/common/message_patch.js similarity index 82% rename from addons/im_livechat/static/src/embed/core_ui/message_patch.js rename to addons/im_livechat/static/src/embed/common/message_patch.js index 85b1f7fcfd3..a2d959c9f4b 100644 --- a/addons/im_livechat/static/src/embed/core_ui/message_patch.js +++ b/addons/im_livechat/static/src/embed/common/message_patch.js @@ -14,7 +14,7 @@ patch(Message.prototype, { }, /** - * @param {import("@im_livechat/embed/chatbot/chatbot_step_model").StepAnswer} answer + * @param {import("@im_livechat/embed/common/chatbot/chatbot_step_model").StepAnswer} answer */ answerChatbot(answer) { return this.threadService.post(this.props.message.originThread, answer.label); diff --git a/addons/im_livechat/static/src/embed/core_ui/message_patch.xml b/addons/im_livechat/static/src/embed/common/message_patch.xml similarity index 100% rename from addons/im_livechat/static/src/embed/core_ui/message_patch.xml rename to addons/im_livechat/static/src/embed/common/message_patch.xml diff --git a/addons/im_livechat/static/src/embed/core/messaging_service_patch.js b/addons/im_livechat/static/src/embed/common/messaging_service_patch.js similarity index 90% rename from addons/im_livechat/static/src/embed/core/messaging_service_patch.js rename to addons/im_livechat/static/src/embed/common/messaging_service_patch.js index 71720b48bc4..ca6c0a12056 100644 --- a/addons/im_livechat/static/src/embed/core/messaging_service_patch.js +++ b/addons/im_livechat/static/src/embed/common/messaging_service_patch.js @@ -1,5 +1,5 @@ /* @odoo-module */ -import { SESSION_STATE } from "@im_livechat/embed/core/livechat_service"; +import { SESSION_STATE } from "@im_livechat/embed/common/livechat_service"; import { Messaging } from "@mail/core/common/messaging_service"; diff --git a/addons/im_livechat/static/src/embed/core/misc.js b/addons/im_livechat/static/src/embed/common/misc.js similarity index 100% rename from addons/im_livechat/static/src/embed/core/misc.js rename to addons/im_livechat/static/src/embed/common/misc.js diff --git a/addons/im_livechat/static/src/embed/scss/bootstrap_overridden.scss b/addons/im_livechat/static/src/embed/common/scss/bootstrap_overridden.scss similarity index 100% rename from addons/im_livechat/static/src/embed/scss/bootstrap_overridden.scss rename to addons/im_livechat/static/src/embed/common/scss/bootstrap_overridden.scss diff --git a/addons/im_livechat/static/src/embed/scss/shadow.scss b/addons/im_livechat/static/src/embed/common/scss/shadow.scss similarity index 100% rename from addons/im_livechat/static/src/embed/scss/shadow.scss rename to addons/im_livechat/static/src/embed/common/scss/shadow.scss diff --git a/addons/im_livechat/static/src/embed/core/thread_actions.js b/addons/im_livechat/static/src/embed/common/thread_actions.js similarity index 94% rename from addons/im_livechat/static/src/embed/core/thread_actions.js rename to addons/im_livechat/static/src/embed/common/thread_actions.js index b0343dec071..671197a1b02 100644 --- a/addons/im_livechat/static/src/embed/core/thread_actions.js +++ b/addons/im_livechat/static/src/embed/common/thread_actions.js @@ -1,6 +1,6 @@ /* @odoo-module */ -import { SESSION_STATE } from "@im_livechat/embed/core/livechat_service"; +import { SESSION_STATE } from "@im_livechat/embed/common/livechat_service"; import { threadActionsRegistry } from "@mail/core/common/thread_actions"; import "@mail/discuss/call/common/thread_actions"; diff --git a/addons/im_livechat/static/src/embed/core/thread_model_patch.js b/addons/im_livechat/static/src/embed/common/thread_model_patch.js similarity index 72% rename from addons/im_livechat/static/src/embed/core/thread_model_patch.js rename to addons/im_livechat/static/src/embed/common/thread_model_patch.js index 93e8efb8286..5ff6cd98977 100644 --- a/addons/im_livechat/static/src/embed/core/thread_model_patch.js +++ b/addons/im_livechat/static/src/embed/common/thread_model_patch.js @@ -1,20 +1,19 @@ /* @odoo-module */ +import { SESSION_STATE } from "@im_livechat/embed/common/livechat_service"; + import { Record } from "@mail/core/common/record"; import { Thread } from "@mail/core/common/thread_model"; import { onChange } from "@mail/utils/common/misc"; import { patch } from "@web/core/utils/patch"; import { session } from "@web/session"; -import { SESSION_STATE } from "./livechat_service"; patch(Thread, { insert(data) { const isUnknown = !this.get(data); const thread = super.insert(...arguments); const livechatService = this.env.services["im_livechat.livechat"]; - const chatbotService = this.env.services["im_livechat.chatbot"]; - const messageService = this.env.services["mail.message"]; if (thread.type === "livechat" && isUnknown) { onChange( thread, @@ -32,16 +31,16 @@ patch(Thread, { } } ); - if (chatbotService.isChatbotThread(thread)) { + if (this.env.services["im_livechat.chatbot"].isChatbotThread(thread)) { thread.chatbotTypingMessage = { - id: messageService.getNextTemporaryId(), + id: this.env.services["mail.message"].getNextTemporaryId(), res_id: thread.id, model: thread.model, author: thread.operator, }; } else { thread.livechatWelcomeMessage = { - id: messageService.getNextTemporaryId(), + id: this.env.services["mail.message"].getNextTemporaryId(), body: livechatService.options.default_message, res_id: thread.id, model: thread.model, @@ -60,25 +59,6 @@ patch(Thread.prototype, { super.setup(); this.chatbotTypingMessage = Record.one("Message"); this.livechatWelcomeMessage = Record.one("Message"); - this.operator = Record.one("Persona"); - }, - update(data) { - super.update(...arguments); - if (data.operator_pid) { - this.operator = { - type: "partner", - id: data.operator_pid[0], - name: data.operator_pid[1], - }; - } - }, - - get isChatChannel() { - return this.type === "livechat" || super.isChatChannel; - }, - - get typesAllowingCalls() { - return super.typesAllowingCalls.concat(["livechat"]); }, get isLastMessageFromCustomer() { diff --git a/addons/im_livechat/static/src/embed/core_ui/thread_patch.js b/addons/im_livechat/static/src/embed/common/thread_patch.js similarity index 70% rename from addons/im_livechat/static/src/embed/core_ui/thread_patch.js rename to addons/im_livechat/static/src/embed/common/thread_patch.js index a83e4d97449..8f57a6112de 100644 --- a/addons/im_livechat/static/src/embed/core_ui/thread_patch.js +++ b/addons/im_livechat/static/src/embed/common/thread_patch.js @@ -6,13 +6,10 @@ import { useState } from "@odoo/owl"; import { useService } from "@web/core/utils/hooks"; import { patch } from "@web/core/utils/patch"; -import { session } from "@web/session"; patch(Thread.prototype, { setup() { super.setup(); - this.session = session; this.chatbotService = useState(useService("im_livechat.chatbot")); - this.livechatService = useState(useService("im_livechat.livechat")); }, }); diff --git a/addons/im_livechat/static/src/embed/core_ui/thread_patch.scss b/addons/im_livechat/static/src/embed/common/thread_patch.scss similarity index 100% rename from addons/im_livechat/static/src/embed/core_ui/thread_patch.scss rename to addons/im_livechat/static/src/embed/common/thread_patch.scss diff --git a/addons/im_livechat/static/src/embed/core_ui/thread_patch.xml b/addons/im_livechat/static/src/embed/common/thread_patch.xml similarity index 100% rename from addons/im_livechat/static/src/embed/core_ui/thread_patch.xml rename to addons/im_livechat/static/src/embed/common/thread_patch.xml diff --git a/addons/im_livechat/static/src/embed/core/thread_service_patch.js b/addons/im_livechat/static/src/embed/common/thread_service_patch.js similarity index 73% rename from addons/im_livechat/static/src/embed/core/thread_service_patch.js rename to addons/im_livechat/static/src/embed/common/thread_service_patch.js index 29595d252f0..01838a666af 100644 --- a/addons/im_livechat/static/src/embed/core/thread_service_patch.js +++ b/addons/im_livechat/static/src/embed/common/thread_service_patch.js @@ -5,31 +5,20 @@ import { ThreadService, threadService } from "@mail/core/common/thread_service"; import { patch } from "@web/core/utils/patch"; import { url } from "@web/core/utils/urls"; -threadService.dependencies.push( - "im_livechat.livechat", - "im_livechat.chatbot", - "mail.chat_window", - "notification" -); +threadService.dependencies.push("im_livechat.livechat", "im_livechat.chatbot"); patch(ThreadService.prototype, { /** * @param {import("@web/env").OdooEnv} env * @param {{ * "im_livechat.chatbot": import("@im_livechat/embed/chatbot/chatbot_service").ChatBotService, - * "im_livechat.livechat": import("@im_livechat/embed/core/livechat_service").LivechatService, - * "mail.chat_window": import("@mail/core/common/chat_window_service").ChatWindowService, - * notification: typeof import("@web/core/notifications/notification_service").notificationService.start, + * "im_livechat.livechat": import("@im_livechat/embed/common/livechat_service").LivechatService, * }} services */ setup(env, services) { super.setup(env, services); this.livechatService = services["im_livechat.livechat"]; - this.chatWindowService = services["mail.chat_window"]; this.chatbotService = services["im_livechat.chatbot"]; - this.notification = services.notification; - /** @type {Promise?} */ - this.persistPromise = null; }, /** diff --git a/addons/im_livechat/static/src/embed/core_ui/message.scss b/addons/im_livechat/static/src/embed/core_ui/message.scss deleted file mode 100644 index 62a9f109311..00000000000 --- a/addons/im_livechat/static/src/embed/core_ui/message.scss +++ /dev/null @@ -1,4 +0,0 @@ -.o_mail_notification { - font-style: italic; - color: gray; -} diff --git a/addons/im_livechat/static/src/embed/external/boot.js b/addons/im_livechat/static/src/embed/external/boot.js index 5ca2a0df5a2..c287f7bae39 100644 --- a/addons/im_livechat/static/src/embed/external/boot.js +++ b/addons/im_livechat/static/src/embed/external/boot.js @@ -1,8 +1,8 @@ /* @odoo-module */ -import { makeRoot, makeShadow } from "@im_livechat/embed/boot_helpers"; -import { LivechatButton } from "@im_livechat/embed/core_ui/livechat_button"; -import { serverUrl } from "@im_livechat/embed/livechat_data"; +import { makeRoot, makeShadow } from "@im_livechat/embed/common/boot_helpers"; +import { LivechatButton } from "@im_livechat/embed/common/livechat_button"; +import { serverUrl } from "@im_livechat/embed/common/livechat_data"; import { ChatWindowContainer } from "@mail/core/common/chat_window_container"; diff --git a/addons/im_livechat/static/src/embed/external/bus_parameters_service_patch.js b/addons/im_livechat/static/src/embed/external/bus_parameters_service_patch.js index b28cfcbf17e..87a67fbe9c2 100644 --- a/addons/im_livechat/static/src/embed/external/bus_parameters_service_patch.js +++ b/addons/im_livechat/static/src/embed/external/bus_parameters_service_patch.js @@ -2,7 +2,7 @@ import { busParametersService } from "@bus/bus_parameters_service"; -import { serverUrl } from "@im_livechat/embed/livechat_data"; +import { serverUrl } from "@im_livechat/embed/common/livechat_data"; import { patch } from "@web/core/utils/patch"; diff --git a/addons/im_livechat/static/src/embed/frontend/boot_service.js b/addons/im_livechat/static/src/embed/frontend/boot_service.js index 34e2f59709d..845737de62d 100644 --- a/addons/im_livechat/static/src/embed/frontend/boot_service.js +++ b/addons/im_livechat/static/src/embed/frontend/boot_service.js @@ -1,8 +1,8 @@ /* @odoo-module */ -import { makeRoot, makeShadow } from "@im_livechat/embed/boot_helpers"; +import { makeRoot, makeShadow } from "@im_livechat/embed/common/boot_helpers"; import { LivechatRoot } from "@im_livechat/embed/frontend/livechat_root"; -import { serverUrl, isAvailable } from "@im_livechat/embed/livechat_data"; +import { serverUrl, isAvailable } from "@im_livechat/embed/common/livechat_data"; import { _t } from "@web/core/l10n/translation"; import { App } from "@odoo/owl"; diff --git a/addons/im_livechat/static/src/embed/frontend/livechat_root.js b/addons/im_livechat/static/src/embed/frontend/livechat_root.js index fb2d8d79071..77b3bbc4652 100644 --- a/addons/im_livechat/static/src/embed/frontend/livechat_root.js +++ b/addons/im_livechat/static/src/embed/frontend/livechat_root.js @@ -1,6 +1,6 @@ /* @odoo-module */ -import { LivechatButton } from "@im_livechat/embed/core_ui/livechat_button"; +import { LivechatButton } from "@im_livechat/embed/common/livechat_button"; import { ChatWindowContainer } from "@mail/core/common/chat_window_container"; diff --git a/addons/im_livechat/static/src/embed/frontend/overlay_container_patch.js b/addons/im_livechat/static/src/embed/frontend/overlay_container_patch.js index 9f3ba2a2a27..743905f3ed9 100644 --- a/addons/im_livechat/static/src/embed/frontend/overlay_container_patch.js +++ b/addons/im_livechat/static/src/embed/frontend/overlay_container_patch.js @@ -7,5 +7,5 @@ patch(OverlayContainer.prototype, { isVisible(overlay) { const targetInShadow = overlay.props.target?.getRootNode() instanceof ShadowRoot; return targetInShadow ? this.env.inShadow : !this.env.inShadow; - } + }, }); diff --git a/addons/im_livechat/static/tests/embed/feedback_panel_tests.js b/addons/im_livechat/static/tests/embed/feedback_panel_tests.js index ff2d2e5bd91..ab394564c08 100644 --- a/addons/im_livechat/static/tests/embed/feedback_panel_tests.js +++ b/addons/im_livechat/static/tests/embed/feedback_panel_tests.js @@ -2,7 +2,7 @@ import { startServer } from "@bus/../tests/helpers/mock_python_environment"; -import { RATING } from "@im_livechat/embed/core/livechat_service"; +import { RATING } from "@im_livechat/embed/common/livechat_service"; import { loadDefaultConfig, start } from "@im_livechat/../tests/embed/helper/test_utils"; import { triggerHotkey } from "@web/../tests/helpers/utils"; diff --git a/addons/im_livechat/static/tests/embed/helper/test_utils.js b/addons/im_livechat/static/tests/embed/helper/test_utils.js index db497ddde2d..dd578aa670b 100644 --- a/addons/im_livechat/static/tests/embed/helper/test_utils.js +++ b/addons/im_livechat/static/tests/embed/helper/test_utils.js @@ -2,7 +2,7 @@ import { getPyEnv } from "@bus/../tests/helpers/mock_python_environment"; -import { LivechatButton } from "@im_livechat/embed/core_ui/livechat_button"; +import { LivechatButton } from "@im_livechat/embed/common/livechat_button"; import { ChatWindowContainer } from "@mail/core/common/chat_window_container"; import { setupManager } from "@mail/../tests/helpers/webclient_setup"; diff --git a/addons/im_livechat/static/tests/embed/livechat_session_tests.js b/addons/im_livechat/static/tests/embed/livechat_session_tests.js index 1c0092a1b3b..e6b19003138 100644 --- a/addons/im_livechat/static/tests/embed/livechat_session_tests.js +++ b/addons/im_livechat/static/tests/embed/livechat_session_tests.js @@ -3,7 +3,7 @@ import { startServer } from "@bus/../tests/helpers/mock_python_environment"; import { loadDefaultConfig, start } from "@im_livechat/../tests/embed/helper/test_utils"; -import { LivechatButton } from "@im_livechat/embed/core_ui/livechat_button"; +import { LivechatButton } from "@im_livechat/embed/common/livechat_button"; import { mockTimeout, nextTick, triggerHotkey } from "@web/../tests/helpers/utils"; import { click, contains, insertText } from "@web/../tests/utils"; diff --git a/addons/mail/static/src/core/common/thread_service.js b/addons/mail/static/src/core/common/thread_service.js index bb4404e9309..768b9f1d0e0 100644 --- a/addons/mail/static/src/core/common/thread_service.js +++ b/addons/mail/static/src/core/common/thread_service.js @@ -829,7 +829,7 @@ export class ThreadService { if (thread.type === "mailbox") { return thread.counter; } - if (thread.type === "chat" || thread.type === "group") { + if (thread.isChatChannel) { return thread.message_unread_counter || thread.message_needaction_counter; } return thread.message_needaction_counter; diff --git a/addons/website_livechat/__manifest__.py b/addons/website_livechat/__manifest__.py index 2f0f701fe90..da63b68d8f0 100644 --- a/addons/website_livechat/__manifest__.py +++ b/addons/website_livechat/__manifest__.py @@ -25,8 +25,8 @@ Allow website visitors to chat with the collaborators. This module also brings a 'data/website_livechat_chatbot_demo.xml', ], 'assets': { - 'im_livechat.assets_core': [ - 'website_livechat/static/src/embed/**/*', + 'im_livechat.assets_embed_core': [ + 'website_livechat/static/src/embed/common/**/*', ], 'website.assets_wysiwyg': [ 'website_livechat/static/src/scss/**/*', diff --git a/addons/website_livechat/static/src/embed/livechat_service_patch.js b/addons/website_livechat/static/src/embed/common/livechat_service_patch.js similarity index 83% rename from addons/website_livechat/static/src/embed/livechat_service_patch.js rename to addons/website_livechat/static/src/embed/common/livechat_service_patch.js index 7f6295dfaef..096bcce239c 100644 --- a/addons/website_livechat/static/src/embed/livechat_service_patch.js +++ b/addons/website_livechat/static/src/embed/common/livechat_service_patch.js @@ -1,6 +1,6 @@ /* @odoo-module */ -import { LivechatService } from "@im_livechat/embed/core/livechat_service"; +import { LivechatService } from "@im_livechat/embed/common/livechat_service"; import { patch } from "@web/core/utils/patch"; patch(LivechatService.prototype, { diff --git a/addons/website_livechat/static/src/embed/thread_model_patch.js b/addons/website_livechat/static/src/embed/common/thread_model_patch.js similarity index 100% rename from addons/website_livechat/static/src/embed/thread_model_patch.js rename to addons/website_livechat/static/src/embed/common/thread_model_patch.js diff --git a/addons/website_livechat/static/src/core/@ypes/models.d.ts b/addons/website_livechat/static/src/web/@types/models.d.ts similarity index 100% rename from addons/website_livechat/static/src/core/@ypes/models.d.ts rename to addons/website_livechat/static/src/web/@types/models.d.ts diff --git a/addons/website_livechat/static/src/core/channel_member_model_patch.js b/addons/website_livechat/static/src/web/channel_member_model_patch.js similarity index 100% rename from addons/website_livechat/static/src/core/channel_member_model_patch.js rename to addons/website_livechat/static/src/web/channel_member_model_patch.js diff --git a/addons/website_livechat/static/src/core/persona_model_patch.js b/addons/website_livechat/static/src/web/persona_model_patch.js similarity index 100% rename from addons/website_livechat/static/src/core/persona_model_patch.js rename to addons/website_livechat/static/src/web/persona_model_patch.js diff --git a/addons/website_livechat/static/src/core/thread_model_patch.js b/addons/website_livechat/static/src/web/thread_model_patch.js similarity index 100% rename from addons/website_livechat/static/src/core/thread_model_patch.js rename to addons/website_livechat/static/src/web/thread_model_patch.js diff --git a/addons/website_livechat/static/src/core_ui/thread_patch.js b/addons/website_livechat/static/src/web/thread_patch.js similarity index 100% rename from addons/website_livechat/static/src/core_ui/thread_patch.js rename to addons/website_livechat/static/src/web/thread_patch.js diff --git a/addons/website_livechat/static/src/core_ui/thread_patch.scss b/addons/website_livechat/static/src/web/thread_patch.scss similarity index 100% rename from addons/website_livechat/static/src/core_ui/thread_patch.scss rename to addons/website_livechat/static/src/web/thread_patch.scss diff --git a/addons/website_livechat/static/src/core_ui/thread_patch.xml b/addons/website_livechat/static/src/web/thread_patch.xml similarity index 100% rename from addons/website_livechat/static/src/core_ui/thread_patch.xml rename to addons/website_livechat/static/src/web/thread_patch.xml diff --git a/addons/website_livechat/static/src/core/thread_service_patch.js b/addons/website_livechat/static/src/web/thread_service_patch.js similarity index 100% rename from addons/website_livechat/static/src/core/thread_service_patch.js rename to addons/website_livechat/static/src/web/thread_service_patch.js diff --git a/addons/website_livechat/static/src/core/website_livechat_notification_handler.js b/addons/website_livechat/static/src/web/website_livechat_notification_handler.js similarity index 100% rename from addons/website_livechat/static/src/core/website_livechat_notification_handler.js rename to addons/website_livechat/static/src/web/website_livechat_notification_handler.js diff --git a/addons/website_livechat/static/tests/tours/website_livechat_request.js b/addons/website_livechat/static/tests/tours/website_livechat_request.js index e1ed34580b3..c81f5bc5ce3 100644 --- a/addons/website_livechat/static/tests/tours/website_livechat_request.js +++ b/addons/website_livechat/static/tests/tours/website_livechat_request.js @@ -5,7 +5,7 @@ import { endDiscussion, okRating, feedback, transcript, close } from "./website_ import { registry } from "@web/core/registry"; odoo.loader.bus.addEventListener("module-started", (e) => { - if (e.detail.moduleName === "@im_livechat/embed/core/livechat_service") { + if (e.detail.moduleName === "@im_livechat/embed/common/livechat_service") { const { LivechatService, ODOO_VERSION_KEY } = e.detail.module; // Livechat sessions are deleted if they come from a different odoo version than // the current one. Since each test is run with a different browser the version @@ -25,12 +25,12 @@ odoo.loader.bus.addEventListener("module-started", (e) => { } catch { // Could be intentional (tour ended successfully while version still loading) } - + return super.initialize(...arguments); }, }); } -}) +}); const chatRequest = [ {