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);