diff --git a/addons/mail/static/src/discuss_app/channel_member_list.js b/addons/mail/static/src/discuss/channel_member_list.js similarity index 96% rename from addons/mail/static/src/discuss_app/channel_member_list.js rename to addons/mail/static/src/discuss/channel_member_list.js index c24ab5c7b87..0080468c2a6 100644 --- a/addons/mail/static/src/discuss_app/channel_member_list.js +++ b/addons/mail/static/src/discuss/channel_member_list.js @@ -1,8 +1,8 @@ /* @odoo-module */ -import { Component, onWillUpdateProps, onWillStart, useState } from "@odoo/owl"; import { useMessaging, useStore } from "@mail/core/messaging_hook"; -import { ImStatus } from "./im_status"; +import { ImStatus } from "@mail/discuss_app/im_status"; +import { Component, onWillUpdateProps, onWillStart, useState } from "@odoo/owl"; import { useService } from "@web/core/utils/hooks"; export class ChannelMemberList extends Component { diff --git a/addons/mail/static/src/discuss_app/channel_member_list.scss b/addons/mail/static/src/discuss/channel_member_list.scss similarity index 57% rename from addons/mail/static/src/discuss_app/channel_member_list.scss rename to addons/mail/static/src/discuss/channel_member_list.scss index 4f6cd031644..a2a190128cb 100644 --- a/addons/mail/static/src/discuss_app/channel_member_list.scss +++ b/addons/mail/static/src/discuss/channel_member_list.scss @@ -1,8 +1,8 @@ -.o-mail-ChannelMember:hover { +.o-discuss-ChannelMember:hover { @extend .bg-300; } -.o-mail-ChannelMember-avatar { +.o-discuss-ChannelMember-avatar { width: $o-mail-Avatar-size; height: $o-mail-Avatar-size; } diff --git a/addons/mail/static/src/discuss_app/channel_member_list.xml b/addons/mail/static/src/discuss/channel_member_list.xml similarity index 83% rename from addons/mail/static/src/discuss_app/channel_member_list.xml rename to addons/mail/static/src/discuss/channel_member_list.xml index 0e8d0ffaf54..1a8b8cfe780 100644 --- a/addons/mail/static/src/discuss_app/channel_member_list.xml +++ b/addons/mail/static/src/discuss/channel_member_list.xml @@ -2,7 +2,7 @@ -
+
Online - @@ -26,8 +26,8 @@ -
-
+
+
diff --git a/addons/mail/static/src/discuss/discuss_patch.js b/addons/mail/static/src/discuss/discuss_patch.js index 70b30295f08..79d3b1efbfd 100644 --- a/addons/mail/static/src/discuss/discuss_patch.js +++ b/addons/mail/static/src/discuss/discuss_patch.js @@ -1,11 +1,16 @@ /* @odoo-module */ import { ChannelInvitation } from "@mail/discuss/channel_invitation"; +import { ChannelMemberList } from "@mail/discuss/channel_member_list"; import { Discuss } from "@mail/discuss_app/discuss"; import { useRef } from "@odoo/owl"; import { usePopover } from "@web/core/popover/popover_hook"; import { patch } from "@web/core/utils/patch"; +patch(Discuss, "discuss", { + components: { ...Discuss.components, ChannelMemberList }, +}); + patch(Discuss.prototype, "discuss", { setup() { this._super(); @@ -26,4 +31,10 @@ patch(Discuss.prototype, "discuss", { }); } }, + toggleMemberList() { + this.state.activeMode = + this.state.activeMode === this.MODES.MEMBER_LIST + ? this.MODES.NONE + : this.MODES.MEMBER_LIST; + }, }); diff --git a/addons/mail/static/src/discuss/discuss_patch.scss b/addons/mail/static/src/discuss/discuss_patch.scss new file mode 100644 index 00000000000..5883a08a05d --- /dev/null +++ b/addons/mail/static/src/discuss/discuss_patch.scss @@ -0,0 +1,3 @@ +.o-mail-Discuss-channelMemberList { + width: $o-mail-Discuss-inspector; +} diff --git a/addons/mail/static/src/discuss/discuss_patch.xml b/addons/mail/static/src/discuss/discuss_patch.xml index 58b062011a4..f6def0b2144 100644 --- a/addons/mail/static/src/discuss/discuss_patch.xml +++ b/addons/mail/static/src/discuss/discuss_patch.xml @@ -5,6 +5,12 @@ + + + + diff --git a/addons/mail/static/src/discuss/web/chat_window_patch.js b/addons/mail/static/src/discuss/web/chat_window_patch.js index e8ed4ad5572..7930751974c 100644 --- a/addons/mail/static/src/discuss/web/chat_window_patch.js +++ b/addons/mail/static/src/discuss/web/chat_window_patch.js @@ -1,15 +1,19 @@ /* @odoo-module */ import { ChannelInvitation } from "@mail/discuss/channel_invitation"; +import { ChannelMemberList } from "@mail/discuss/channel_member_list"; import { ChatWindow } from "@mail/web/chat_window/chat_window"; import { patch } from "@web/core/utils/patch"; patch(ChatWindow, "discuss", { - components: { ...ChatWindow.components, ChannelInvitation }, + components: { ...ChatWindow.components, ChannelInvitation, ChannelMemberList }, }); patch(ChatWindow.prototype, "discuss", { toggleAddUsers() { this.state.activeMode = this.state.activeMode === "add-users" ? "" : "add-users"; }, + toggleMemberList() { + this.state.activeMode = this.state.activeMode === "member-list" ? "" : "member-list"; + }, }); diff --git a/addons/mail/static/src/discuss/web/chat_window_patch.xml b/addons/mail/static/src/discuss/web/chat_window_patch.xml index 6283b6aefac..b45cefc3826 100644 --- a/addons/mail/static/src/discuss/web/chat_window_patch.xml +++ b/addons/mail/static/src/discuss/web/chat_window_patch.xml @@ -6,7 +6,13 @@
- + +
+ +
+
+ + diff --git a/addons/mail/static/src/discuss_app/discuss.js b/addons/mail/static/src/discuss_app/discuss.js index 0356d3541b5..50823632c75 100644 --- a/addons/mail/static/src/discuss_app/discuss.js +++ b/addons/mail/static/src/discuss_app/discuss.js @@ -8,7 +8,6 @@ import { useRtc } from "../rtc/rtc_hook"; import { useMessageEdition, useMessageHighlight, useMessageToReplyTo } from "@mail/utils/hooks"; import { Composer } from "../composer/composer"; import { Call } from "../rtc/call"; -import { ChannelMemberList } from "./channel_member_list"; import { Component, onWillStart, @@ -32,7 +31,6 @@ export class Discuss extends Component { Composer, Call, CallSettings, - ChannelMemberList, PinnedMessagesPanel, }; static props = { @@ -116,13 +114,6 @@ export class Discuss extends Component { this.state.activeMode === this.MODES.SETTINGS ? this.MODES.NONE : this.MODES.SETTINGS; } - toggleMemberList() { - this.state.activeMode = - this.state.activeMode === this.MODES.MEMBER_LIST - ? this.MODES.NONE - : this.MODES.MEMBER_LIST; - } - async renameThread({ value: name }) { const newName = name.trim(); if ( diff --git a/addons/mail/static/src/discuss_app/discuss.scss b/addons/mail/static/src/discuss_app/discuss.scss index 4d3ed838a27..31db3e2ead8 100644 --- a/addons/mail/static/src/discuss_app/discuss.scss +++ b/addons/mail/static/src/discuss_app/discuss.scss @@ -12,10 +12,6 @@ width: 300px; } -.o-mail-Discuss-channelMemberList { - width: $o-mail-Discuss-inspector; -} - .o-mail-Discuss-selfAvatar { height: $o-mail-Avatar-sizeSmall; width: $o-mail-Avatar-sizeSmall; diff --git a/addons/mail/static/src/discuss_app/discuss.xml b/addons/mail/static/src/discuss_app/discuss.xml index 98ceb15e36c..3b21b708467 100644 --- a/addons/mail/static/src/discuss_app/discuss.xml +++ b/addons/mail/static/src/discuss_app/discuss.xml @@ -34,9 +34,6 @@ - @@ -61,7 +58,6 @@
-
diff --git a/addons/mail/static/src/web/chat_window/chat_window.js b/addons/mail/static/src/web/chat_window/chat_window.js index 8606aebf99f..eba68492fe4 100644 --- a/addons/mail/static/src/web/chat_window/chat_window.js +++ b/addons/mail/static/src/web/chat_window/chat_window.js @@ -10,7 +10,6 @@ import { Component, useChildSubEnv, useRef, useState } from "@odoo/owl"; import { useService } from "@web/core/utils/hooks"; import { localization } from "@web/core/l10n/localization"; import { CallSettings } from "@mail/rtc/call_settings"; -import { ChannelMemberList } from "@mail/discuss_app/channel_member_list"; import { ThreadIcon } from "@mail/discuss_app/thread_icon"; import { isEventHandled } from "@mail/utils/misc"; import { ChannelSelector } from "@mail/discuss_app/channel_selector"; @@ -30,7 +29,6 @@ export class ChatWindow extends Component { ChannelSelector, Composer, CallSettings, - ChannelMemberList, ThreadIcon, PinnedMessagesPanel, }; @@ -134,10 +132,6 @@ export class ChatWindow extends Component { this.state.activeMode = this.state.activeMode === "in-settings" ? "" : "in-settings"; } - toggleMemberList() { - this.state.activeMode = this.state.activeMode === "member-list" ? "" : "member-list"; - } - expand() { if (this.thread.type === "chatter") { this.action.doAction({ diff --git a/addons/mail/static/src/web/chat_window/chat_window.xml b/addons/mail/static/src/web/chat_window/chat_window.xml index 62af2d4f62a..7b2be0b4daa 100644 --- a/addons/mail/static/src/web/chat_window/chat_window.xml +++ b/addons/mail/static/src/web/chat_window/chat_window.xml @@ -33,10 +33,7 @@
-
- -
-
+
@@ -51,7 +48,6 @@ - diff --git a/addons/mail/static/tests/discuss_app/channel_member_list_tests.js b/addons/mail/static/tests/discuss/channel_member_list_tests.js similarity index 94% rename from addons/mail/static/tests/discuss_app/channel_member_list_tests.js rename to addons/mail/static/tests/discuss/channel_member_list_tests.js index 6a95f8f35cf..886a4fcc587 100644 --- a/addons/mail/static/tests/discuss_app/channel_member_list_tests.js +++ b/addons/mail/static/tests/discuss/channel_member_list_tests.js @@ -1,4 +1,4 @@ -/** @odoo-module **/ +/* @odoo-module */ import { click, start, startServer } from "@mail/../tests/helpers/test_utils"; import { createLocalId } from "@mail/utils/misc"; @@ -41,7 +41,7 @@ QUnit.test( const { openDiscuss } = await start(); await openDiscuss(channelId); await click("button[title='Show Member List']"); - assert.containsOnce($, ".o-mail-ChannelMemberList"); + assert.containsOnce($, ".o-discuss-ChannelMemberList"); } ); @@ -59,9 +59,9 @@ QUnit.test("should have correct members in member list", async (assert) => { const { openDiscuss } = await start(); await openDiscuss(channelId); await click("button[title='Show Member List']"); - assert.containsN($, ".o-mail-ChannelMember", 2); - assert.containsOnce($, `.o-mail-ChannelMember:contains("${pyEnv.currentPartner.name}")`); - assert.containsOnce($, ".o-mail-ChannelMember:contains('Demo')"); + assert.containsN($, ".o-discuss-ChannelMember", 2); + assert.containsOnce($, `.o-discuss-ChannelMember:contains("${pyEnv.currentPartner.name}")`); + assert.containsOnce($, ".o-discuss-ChannelMember:contains('Demo')"); }); QUnit.test( @@ -99,7 +99,7 @@ QUnit.test("chat with member should be opened after clicking on channel member", const { openDiscuss } = await start(); await openDiscuss(channelId); await click("button[title='Show Member List']"); - await click(".o-mail-ChannelMember.cursor-pointer"); + await click(".o-discuss-ChannelMember.cursor-pointer"); assert.containsOnce($, ".o-mail-AutoresizeInput[title='Demo']"); }); @@ -142,7 +142,7 @@ QUnit.test("Load more button should load more members", async (assert) => { pyEnv["discuss.channel"].write([channelId], { channel_member_ids }); await click("button[title='Show Member List']"); await click("button[title='Load more']"); - assert.containsN($, ".o-mail-ChannelMember", 102); + assert.containsN($, ".o-discuss-ChannelMember", 102); }); QUnit.test("Channel member count update after user joined", async (assert) => { diff --git a/addons/mail/static/tests/discuss/crosstab/crosstab_tests.js b/addons/mail/static/tests/discuss/crosstab/crosstab_tests.js index 21032892dfd..c4320646b5c 100644 --- a/addons/mail/static/tests/discuss/crosstab/crosstab_tests.js +++ b/addons/mail/static/tests/discuss/crosstab/crosstab_tests.js @@ -12,11 +12,11 @@ QUnit.test("Add member to channel", async (assert) => { const { openDiscuss } = await start(); await openDiscuss(channelId); await click("button[title='Show Member List']"); - assert.containsOnce($, ".o-mail-ChannelMember:contains(Mitchell Admin)"); + assert.containsOnce($, ".o-discuss-ChannelMember:contains(Mitchell Admin)"); await click("button[title='Add Users']"); await click(".o-discuss-ChannelInvitation-selectable:contains(Harry)"); await click("button[title='Invite to Channel']"); - assert.containsOnce($, ".o-mail-ChannelMember:contains(Harry)"); + assert.containsOnce($, ".o-discuss-ChannelMember:contains(Harry)"); }); QUnit.test("Remove member from channel", async (assert) => { @@ -36,7 +36,7 @@ QUnit.test("Remove member from channel", async (assert) => { const { env, openDiscuss } = await start(); await openDiscuss(channelId); await click("button[title='Show Member List']"); - assert.containsOnce($, ".o-mail-ChannelMember:contains(Harry)"); + assert.containsOnce($, ".o-discuss-ChannelMember:contains(Harry)"); env.services.orm.call("discuss.channel", "action_unfollow", [channelId], { context: { mockedUserId: userId }, }); diff --git a/addons/mail/static/tests/discuss/discuss_tests.js b/addons/mail/static/tests/discuss/discuss_tests.js new file mode 100644 index 00000000000..a85c6037204 --- /dev/null +++ b/addons/mail/static/tests/discuss/discuss_tests.js @@ -0,0 +1,17 @@ +/* @odoo-module */ + +import { click, start, startServer } from "@mail/../tests/helpers/test_utils"; + +QUnit.module("discuss"); + +QUnit.test("Member list and settings menu are exclusive", async (assert) => { + const pyEnv = await startServer(); + const channelId = pyEnv["discuss.channel"].create({ name: "General" }); + const { openDiscuss } = await start(); + await openDiscuss(channelId); + await click("button[title='Show Member List']"); + assert.containsOnce($, ".o-discuss-ChannelMemberList"); + await click("button[title='Show Call Settings']"); + assert.containsOnce($, ".o-mail-CallSettings"); + assert.containsNone($, ".o-discuss-ChannelMemberList"); +}); diff --git a/addons/mail/static/tests/discuss_app/discuss_tests.js b/addons/mail/static/tests/discuss_app/discuss_tests.js index 8b282303353..424a17b8929 100644 --- a/addons/mail/static/tests/discuss_app/discuss_tests.js +++ b/addons/mail/static/tests/discuss_app/discuss_tests.js @@ -1921,18 +1921,6 @@ QUnit.test("Create a direct message channel when clicking on start a meeting", a assert.containsOnce($, ".o-mail-Call"); }); -QUnit.test("Member list and settings menu are exclusive", async (assert) => { - const pyEnv = await startServer(); - const channelId = pyEnv["discuss.channel"].create({ name: "General" }); - const { openDiscuss } = await start(); - await openDiscuss(channelId); - await click("button[title='Show Member List']"); - assert.containsOnce($, ".o-mail-ChannelMemberList"); - await click("button[title='Show Call Settings']"); - assert.containsOnce($, ".o-mail-CallSettings"); - assert.containsNone($, ".o-mail-ChannelMemberList"); -}); - QUnit.test( "Correct breadcrumb when open discuss from chat window then see settings", async (assert) => {