From 0500b596db4889f79549d348614d0ffc6bdfa0fb Mon Sep 17 00:00:00 2001 From: Alex Khomenko Date: Tue, 2 Jul 2024 17:37:40 +0300 Subject: [PATCH] BrowseDashboards: Update results when starred param changes (#89944) * BrowseDashboards: Trigger update results when starred param changes * Use LocationService * Use locationService directly --- .../features/browse-dashboards/BrowseDashboardsPage.tsx | 8 +++++++- public/app/features/search/state/SearchStateManager.ts | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx b/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx index 0bc5416047b..cac9d26c593 100644 --- a/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx +++ b/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx @@ -3,7 +3,7 @@ import { memo, useEffect, useMemo } from 'react'; import AutoSizer from 'react-virtualized-auto-sizer'; import { GrafanaTheme2 } from '@grafana/data'; -import { reportInteraction } from '@grafana/runtime'; +import { locationService, reportInteraction } from '@grafana/runtime'; import { FilterInput, useStyles2 } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { GrafanaRouteComponentProps } from 'app/core/navigation/types'; @@ -39,6 +39,7 @@ const BrowseDashboardsPage = memo(({ match }: Props) => { const styles = useStyles2(getStyles); const [searchState, stateManager] = useSearchStateManager(); const isSearching = stateManager.hasSearchFilters(); + const search = locationService.getSearch(); useEffect(() => { stateManager.initStateFromUrl(folderUID); @@ -52,6 +53,11 @@ const BrowseDashboardsPage = memo(({ match }: Props) => { ); }, [dispatch, folderUID, stateManager]); + // Trigger search when "starred" query param changes + useEffect(() => { + stateManager.onSetStarred(search.has('starred')); + }, [search, stateManager]); + useEffect(() => { // Clear the search results when we leave SearchView to prevent old results flashing // when starting a new search diff --git a/public/app/features/search/state/SearchStateManager.ts b/public/app/features/search/state/SearchStateManager.ts index c85d6c33d41..f07c12e6038 100644 --- a/public/app/features/search/state/SearchStateManager.ts +++ b/public/app/features/search/state/SearchStateManager.ts @@ -161,6 +161,12 @@ export class SearchStateManager extends StateManagerBase { this.setStateAndDoSearch({ starred: false }); }; + onSetStarred = (starred: boolean) => { + if (starred !== this.state.starred) { + this.setStateAndDoSearch({ starred }); + } + }; + onSortChange = (sort: string | undefined) => { if (sort) { localStorage.setItem(SEARCH_SELECTED_SORT, sort);