FIX: Hide Uncategorized in site menu when disabled. (#7509)

FIX: Hide Uncategorized in site menu when disabled. (#7509)

diff --git a/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6 b/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6
index b7443a5..023128b 100644
--- a/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6
+++ b/app/assets/javascripts/discourse/widgets/hamburger-menu.js.es6
@@ -204,6 +204,12 @@ export default createWidget("hamburger-menu", {
       );
     }
 
+    if (!this.siteSettings.allow_uncategorized_topics) {
+      categories = categories.filter(
+        c => c.id !== this.site.uncategorized_category_id
+      );
+    }
+
     const moreCount = categories.length - maxCategoriesToDisplay;
     categories = categories.slice(0, maxCategoriesToDisplay);
 
diff --git a/test/javascripts/widgets/hamburger-menu-test.js.es6 b/test/javascripts/widgets/hamburger-menu-test.js.es6
index fe2db01..f1385ba 100644
--- a/test/javascripts/widgets/hamburger-menu-test.js.es6
+++ b/test/javascripts/widgets/hamburger-menu-test.js.es6
@@ -125,19 +125,38 @@ widgetTest("top categories - anonymous", {
 
   beforeEach() {
     this.siteSettings.header_dropdown_category_count = 8;
-    maxCategoriesToDisplay = this.siteSettings.header_dropdown_category_count;
-    categoriesByCount = this.site.get("categoriesByCount");
   },
 
   test(assert) {
-    const count = categoriesByCount.length;
-    const maximum =
-      count <= maxCategoriesToDisplay ? count : maxCategoriesToDisplay;
-    assert.equal(find(".category-link").length, maximum);
+    assert.equal(find(".category-link").length, 8);
+    assert.equal(
+      find(".category-link .category-name").text(),
+      this.site
+        .get("categoriesByCount")
+        .slice(0, 8)
+        .map(c => c.name)
+        .join("")
+    );
+  }
+});
+
+widgetTest("top categories - allow_uncategorized_topics", {
+  template: '{{mount-widget widget="hamburger-menu"}}',
+  anonymous: true,
+
+  beforeEach() {
+    this.siteSettings.allow_uncategorized_topics = false;
+    this.siteSettings.header_dropdown_category_count = 8;
+  },
+
+  test(assert) {
+    assert.equal(find(".category-link").length, 8);
     assert.equal(
       find(".category-link .category-name").text(),
-      categoriesByCount
-        .slice(0, maxCategoriesToDisplay)
+      this.site
+        .get("categoriesByCount")
+        .filter(c => c.name !== "uncategorized")
+        .slice(0, 8)
         .map(c => c.name)
         .join("")
     );

GitHub sha: c06b00a5

1 Like