diff --git a/addons/im_livechat/static/src/embed/core/disabled_features.js b/addons/im_livechat/static/src/embed/core/disabled_features.js index 84fa35c94d8..7992cd3ac68 100644 --- a/addons/im_livechat/static/src/embed/core/disabled_features.js +++ b/addons/im_livechat/static/src/embed/core/disabled_features.js @@ -1,6 +1,5 @@ /* @odoo-module */ -import { ChatWindowService } from "@mail/core/common/chat_window_service"; import { Composer } from "@mail/core/common/composer"; import { Message as MessageModel } from "@mail/core/common/message_model"; import { Store } from "@mail/core/common/store_service"; @@ -9,12 +8,6 @@ import { ThreadService } from "@mail/core/common/thread_service"; import { patch } from "@web/core/utils/patch"; -patch(ChatWindowService.prototype, "im_livechat/disabled", { - notifyState() { - return; - }, -}); - patch(Composer.prototype, "im_livechat/disabled", { get allowUpload() { return false; diff --git a/addons/mail/static/src/core/common/chat_window.js b/addons/mail/static/src/core/common/chat_window.js index 6cd295d8a92..2cc9640f25c 100644 --- a/addons/mail/static/src/core/common/chat_window.js +++ b/addons/mail/static/src/core/common/chat_window.js @@ -106,12 +106,10 @@ export class ChatWindow extends Component { } else { this.chatWindowService.toggleFold(this.props.chatWindow); } - this.chatWindowService.notifyState(this.props.chatWindow); } close(options) { this.chatWindowService.close(this.props.chatWindow, options); - this.chatWindowService.notifyState(this.props.chatWindow); } get moreMenuText() { diff --git a/addons/mail/static/src/core/common/chat_window_service.js b/addons/mail/static/src/core/common/chat_window_service.js index 846e6f27d16..5067cb16288 100644 --- a/addons/mail/static/src/core/common/chat_window_service.js +++ b/addons/mail/static/src/core/common/chat_window_service.js @@ -24,6 +24,19 @@ export class ChatWindowService { this.ui = services.ui; } + open(thread, replaceNewMessageChatWindow) { + const chatWindow = this.insert({ + folded: false, + thread, + replaceNewMessageChatWindow, + }); + chatWindow.autofocus++; + if (thread) { + thread.state = "open"; + } + return chatWindow; + } + openNewMessage() { if (this.store.chatWindows.some(({ thread }) => !thread)) { // New message chat window is already opened. @@ -61,22 +74,6 @@ export class ChatWindowService { return maxAmountWithoutHidden; } - notifyState(chatWindow) { - if (this.ui.isSmall) { - return; - } - if (chatWindow.thread?.model === "discuss.channel") { - return this.orm.silent.call( - "discuss.channel", - "channel_fold", - [[chatWindow.thread.id]], - { - state: chatWindow.thread.state, - } - ); - } - } - /** * @param {ChatWindowData} [data] * @returns {ChatWindow} @@ -147,7 +144,7 @@ export class ChatWindowService { chatWindow.thread.state = "folded"; } - async close(chatWindow, { escape = false } = {}) { + close(chatWindow, { escape = false } = {}) { if (this.maxVisible < this.store.chatWindows.length) { const swaped = this.hidden[0]; swaped.hidden = false; diff --git a/addons/mail/static/src/core/web/thread_service_patch.js b/addons/mail/static/src/core/web/thread_service_patch.js index 746b9ad921b..adc4d746108 100644 --- a/addons/mail/static/src/core/web/thread_service_patch.js +++ b/addons/mail/static/src/core/web/thread_service_patch.js @@ -171,17 +171,7 @@ patch(ThreadService.prototype, "mail/core/web", { }, open(thread, replaceNewMessageChatWindow) { if (!this.store.discuss.isActive || this.ui.isSmall) { - const chatWindow = this.chatWindowService.insert({ - folded: false, - thread, - replaceNewMessageChatWindow, - }); - chatWindow.autofocus++; - if (thread) { - thread.state = "open"; - } - this.chatWindowService.notifyState(chatWindow); - return; + this.chatWindowService.open(thread, replaceNewMessageChatWindow); } this._super(thread, replaceNewMessageChatWindow); }, diff --git a/addons/mail/static/src/discuss/core/web/chat_window_service_patch.js b/addons/mail/static/src/discuss/core/web/chat_window_service_patch.js new file mode 100644 index 00000000000..7cba830605e --- /dev/null +++ b/addons/mail/static/src/discuss/core/web/chat_window_service_patch.js @@ -0,0 +1,43 @@ +/* @odoo-module */ + +import { ChatWindowService } from "@mail/core/common/chat_window_service"; + +import { patch } from "@web/core/utils/patch"; + +patch(ChatWindowService.prototype, "discuss/core/web", { + close(chatWindow) { + this._super(...arguments); + this.notifyState(chatWindow); + }, + hide(chatWindow) { + this._super(...arguments); + this.notifyState(chatWindow); + }, + notifyState(chatWindow) { + if (this.ui.isSmall) { + return; + } + if (chatWindow.thread?.model === "discuss.channel") { + return this.orm.silent.call( + "discuss.channel", + "channel_fold", + [[chatWindow.thread.id]], + { + state: chatWindow.thread.state, + } + ); + } + }, + open() { + const chatWindow = this._super(...arguments); + this.notifyState(chatWindow); + }, + show(chatWindow) { + this._super(...arguments); + this.notifyState(chatWindow); + }, + toggleFold(chatWindow) { + this._super(...arguments); + this.notifyState(chatWindow); + }, +});