From 7ae716fa69502cd903c452afa32ad7b8d7444e6c Mon Sep 17 00:00:00 2001
From: Martin Brennan <martin@discourse.org>
Date: Tue, 11 Apr 2023 12:31:17 +1000
Subject: [PATCH] FIX: Multiple channels marked active in sidebar (#21045)

Followup to c1dc6a2db4d9e98caa62ba51beba3a16adf495a8,
this commit just missed removing one of the @computed
decorators which was causing multiple active channels
to show in the sidebar. Fix the issue and introduce a
system spec to catch this.
---
 .../discourse/initializers/chat-sidebar.js      |  2 --
 plugins/chat/spec/system/navigation_spec.rb     | 17 +++++++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/plugins/chat/assets/javascripts/discourse/initializers/chat-sidebar.js b/plugins/chat/assets/javascripts/discourse/initializers/chat-sidebar.js
index 17ee576d745..b1b6a84fb3b 100644
--- a/plugins/chat/assets/javascripts/discourse/initializers/chat-sidebar.js
+++ b/plugins/chat/assets/javascripts/discourse/initializers/chat-sidebar.js
@@ -9,7 +9,6 @@ import { emojiUnescape } from "discourse/lib/text";
 import { decorateUsername } from "discourse/helpers/decorate-username-selector";
 import { until } from "discourse/lib/formatter";
 import { inject as service } from "@ember/service";
-import { computed } from "@ember/object";
 
 export default {
   name: "chat-sidebar",
@@ -196,7 +195,6 @@ export default {
               return this.channel.slugifiedTitle;
             }
 
-            @computed("chatService.activeChannel")
             get classNames() {
               const classes = [];
 
diff --git a/plugins/chat/spec/system/navigation_spec.rb b/plugins/chat/spec/system/navigation_spec.rb
index 559c9a4c2e3..22640a9bb9b 100644
--- a/plugins/chat/spec/system/navigation_spec.rb
+++ b/plugins/chat/spec/system/navigation_spec.rb
@@ -242,12 +242,29 @@ RSpec.describe "Navigation", type: :system, js: true do
     end
 
     context "when opening a channel in full page" do
+      fab!(:other_user) { Fabricate(:user) }
+      fab!(:dm_channel) { Fabricate(:direct_message_channel, users: [user, other_user]) }
+
       it "activates the channel in the sidebar" do
         visit("/chat/c/#{category_channel.slug}/#{category_channel.id}")
         expect(page).to have_css(
           ".sidebar-section-link-#{category_channel.slug}.sidebar-section-link--active",
         )
       end
+
+      it "does not have multiple channels marked active in the sidebar" do
+        chat_page.visit_channel(dm_channel)
+        expect(page).to have_css(
+          ".sidebar-section-link-#{other_user.username}.sidebar-section-link--active",
+        )
+
+        page.find(".sidebar-section-link-#{category_channel.slug}").click
+        expect(page).to have_css(
+          ".sidebar-section-link-#{category_channel.slug}.sidebar-section-link--active",
+        )
+
+        expect(page).to have_css(".sidebar-section-link--active", count: 1)
+      end
     end
 
     context "when going back to channel from channel settings in full page" do