From 4f4c5763118f2f07e5f734b6b65307ccbe843f45 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Mon, 7 May 2018 17:17:54 +0800 Subject: [PATCH] FIX: Retrigger search scoped to a topic if topic changes. https://meta.discourse.org/t/highlight-the-search-results/10322/12?u=tgxworld --- .../discourse/widgets/search-menu.js.es6 | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/discourse/widgets/search-menu.js.es6 b/app/assets/javascripts/discourse/widgets/search-menu.js.es6 index 39921dbc62f..4b8d5c17727 100644 --- a/app/assets/javascripts/discourse/widgets/search-menu.js.es6 +++ b/app/assets/javascripts/discourse/widgets/search-menu.js.es6 @@ -12,6 +12,7 @@ export function initSearchData() { searchData.term = undefined; searchData.typeFilter = null; searchData.invalidTerm = false; + searchData.topicId = null; } initSearchData(); @@ -64,7 +65,11 @@ const SearchHelper = { } searchData.results = content; - widget.appEvents.trigger('post-stream:refresh', { force: true }); + + if (searchContext.type === 'topic') { + widget.appEvents.trigger('post-stream:refresh', { force: true }); + searchData.topicId = searchContext.id; + } }).finally(() => { searchData.loading = false; widget.scheduleRerender(); @@ -164,11 +169,15 @@ export default createWidget('search-menu', { }, html(attrs) { - if (searchData.contextEnabled !== attrs.contextEnabled) { - searchData.contextEnabled = attrs.contextEnabled; - if (searchData.term) this.triggerSearch(); - } else { - searchData.contextEnabled = attrs.contextEnabled; + searchData.contextEnabled = attrs.contextEnabled; + + const shouldTriggerSearch = ( + (searchData.contextEnabled !== attrs.contextEnabled) || + (this.searchContext().type === 'topic' && searchData.topicId !== this.searchContext().id) + ); + + if (shouldTriggerSearch && searchData.term) { + this.triggerSearch(); } return this.attach('menu-panel', { maxWidth: 500, contents: () => this.panelContents() });