From 0e007842184baef1d1c5537982e8f55a43c13e28 Mon Sep 17 00:00:00 2001
From: Joffrey JAFFEUX <j.jaffeux@gmail.com>
Date: Tue, 22 Aug 2023 18:22:25 +0200
Subject: [PATCH] UX: do not show user tab preference when disabled (#23188)

Prior to this fix we would only check if the user is allowed to chat and not if chat is enabled.
---
 ...user-nav__preferences-chat.hbs => chat-preferences.hbs} | 4 ++--
 .../connectors/user-preferences-nav/chat-preferences.js    | 7 +++++++
 plugins/chat/spec/system/user_chat_preferences_spec.rb     | 6 ++++++
 3 files changed, 15 insertions(+), 2 deletions(-)
 rename plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/{user-nav__preferences-chat.hbs => chat-preferences.hbs} (66%)
 create mode 100644 plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/chat-preferences.js

diff --git a/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/user-nav__preferences-chat.hbs b/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/chat-preferences.hbs
similarity index 66%
rename from plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/user-nav__preferences-chat.hbs
rename to plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/chat-preferences.hbs
index aeeef0a9a5e..197fef79067 100644
--- a/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/user-nav__preferences-chat.hbs
+++ b/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/chat-preferences.hbs
@@ -1,6 +1,6 @@
-{{#if (or this.model.can_chat this.currentUser.admin)}}
+<li class="user-nav__preferences-chat">
   <LinkTo @route="preferences.chat">
     {{d-icon "d-chat"}}
     <span>{{i18n "chat.title_capitalized"}}</span>
   </LinkTo>
-{{/if}}
\ No newline at end of file
+</li>
\ No newline at end of file
diff --git a/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/chat-preferences.js b/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/chat-preferences.js
new file mode 100644
index 00000000000..33364cb7864
--- /dev/null
+++ b/plugins/chat/assets/javascripts/discourse/connectors/user-preferences-nav/chat-preferences.js
@@ -0,0 +1,7 @@
+import Component from "@glimmer/component";
+
+export default class ChatPreferences extends Component {
+  static shouldRender(model, { siteSettings, currentUser }) {
+    return siteSettings.chat_enabled && (model.can_chat || currentUser?.admin);
+  }
+}
diff --git a/plugins/chat/spec/system/user_chat_preferences_spec.rb b/plugins/chat/spec/system/user_chat_preferences_spec.rb
index 3657893c172..50718c118ba 100644
--- a/plugins/chat/spec/system/user_chat_preferences_spec.rb
+++ b/plugins/chat/spec/system/user_chat_preferences_spec.rb
@@ -16,6 +16,12 @@ RSpec.describe "User chat preferences", type: :system do
       sign_in(current_user)
     end
 
+    it "doesn’t show the tab" do
+      visit("/u/#{current_user.username}/preferences")
+
+      expect(page).to have_no_css(".user-nav__preferences-chat", visible: :all)
+    end
+
     it "shows a not found page" do
       visit("/u/#{current_user.username}/preferences/chat")