diff --git a/plugins/chat/assets/javascripts/discourse/initializers/chat-sidebar.js b/plugins/chat/assets/javascripts/discourse/initializers/chat-sidebar.js index 54292ef2206..17ee576d745 100644 --- a/plugins/chat/assets/javascripts/discourse/initializers/chat-sidebar.js +++ b/plugins/chat/assets/javascripts/discourse/initializers/chat-sidebar.js @@ -34,7 +34,6 @@ export default { return dasherize(this.channel.slugifiedTitle); } - @computed("chatService.activeChannel") get classNames() { const classes = []; diff --git a/plugins/chat/assets/javascripts/discourse/services/chat.js b/plugins/chat/assets/javascripts/discourse/services/chat.js index d7491964c93..48cdc614bc5 100644 --- a/plugins/chat/assets/javascripts/discourse/services/chat.js +++ b/plugins/chat/assets/javascripts/discourse/services/chat.js @@ -30,8 +30,6 @@ export default class Chat extends Service { @service chatChannelPane; @service chatChannelThreadPane; - @tracked activeChannel = null; - cook = null; presenceChannel = null; sidebarActive = false; @@ -40,6 +38,19 @@ export default class Chat extends Service { @and("currentUser.has_chat_enabled", "siteSettings.chat_enabled") userCanChat; @tracked _activeMessage = null; + @tracked _activeChannel = null; + + get activeChannel() { + return this._activeChannel; + } + + set activeChannel(channel) { + if (!channel) { + this._activeMessage = null; + } + + this._activeChannel = channel; + } @computed("currentUser.staff", "currentUser.groups.[]") get userCanDirectMessage() { diff --git a/plugins/chat/spec/system/drawer_spec.rb b/plugins/chat/spec/system/drawer_spec.rb index afbec08b2a2..125b1cfdc42 100644 --- a/plugins/chat/spec/system/drawer_spec.rb +++ b/plugins/chat/spec/system/drawer_spec.rb @@ -68,6 +68,25 @@ RSpec.describe "Drawer", type: :system, js: true do end end + context "when closing the drawer" do + fab!(:channel_1) { Fabricate(:chat_channel) } + fab!(:message_1) { Fabricate(:chat_message, chat_channel: channel_1) } + + before { channel_1.add(current_user) } + + it "resets the active message" do + visit("/") + chat_page.open_from_header + drawer.open_channel(channel_1) + channel_page.hover_message(message_1) + expect(page).to have_css(".chat-message-actions-container") + + find(".chat-composer-input").send_keys(:escape) + + expect(page).to have_no_css(".chat-message-actions-container") + end + end + context "when clicking the drawer's header" do it "collapses the drawer" do visit("/")