From 1f8939c0f130892397fb7ee8b0f348f2a7f8b636 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Wed, 20 Oct 2021 09:48:26 -0400 Subject: [PATCH] FIX: Show search context only in topic routes (#14650) --- .../discourse/app/widgets/header.js | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/discourse/app/widgets/header.js b/app/assets/javascripts/discourse/app/widgets/header.js index e92f8ac2985..8adbe4d533c 100644 --- a/app/assets/javascripts/discourse/app/widgets/header.js +++ b/app/assets/javascripts/discourse/app/widgets/header.js @@ -347,6 +347,12 @@ export default createWidget("header", { }, html(attrs, state) { + let inTopicRoute = false; + + if (this.state.inTopicContext) { + inTopicRoute = this.router.currentRouteName.startsWith("topic."); + } + let contents = () => { const headerIcons = this.attach("header-icons", { hamburgerVisible: state.hamburgerVisible, @@ -366,7 +372,7 @@ export default createWidget("header", { if (state.searchVisible) { panels.push( this.attach("search-menu", { - inTopicContext: state.inTopicContext, + inTopicContext: state.inTopicContext && inTopicRoute, }) ); } else if (state.hamburgerVisible) { @@ -449,9 +455,7 @@ export default createWidget("header", { params = `?context=${context.type}&context_id=${context.id}&skip_context=${this.state.skipSearchContext}`; } - const currentPath = this.router.get("_router.currentPath"); - - if (currentPath === "full-page-search") { + if (this.router.currentRouteName === "full-page-search") { scrollTop(); $(".full-page-search").focus(); return false; @@ -524,16 +528,10 @@ export default createWidget("header", { const { state } = this; state.inTopicContext = false; - const currentPath = this.router.get("_router.currentPath"); - const blocklist = [/^discovery\.categories/]; - const allowlist = [/^topic\./]; - const check = function (regex) { - return !!currentPath.match(regex); - }; - let showSearch = allowlist.any(check) && !blocklist.any(check); + let showSearch = this.router.currentRouteName.startsWith("topic."); // If we're viewing a topic, only intercept search if there are cloaked posts - if (showSearch && currentPath.match(/^topic\./)) { + if (showSearch) { const controller = this.register.lookup("controller:topic"); const total = controller.get("model.postStream.stream.length") || 0; const chunkSize = controller.get("model.chunk_size") || 0;