diff --git a/plugins/search/src/components/SearchContext/SearchContext.tsx b/plugins/search/src/components/SearchContext/SearchContext.tsx index ca1a82cde0..b0bcff1f25 100644 --- a/plugins/search/src/components/SearchContext/SearchContext.tsx +++ b/plugins/search/src/components/SearchContext/SearchContext.tsx @@ -22,14 +22,21 @@ import React, { } from 'react'; import { useAsync } from 'react-use'; import { useApi } from '@backstage/core'; -import { SearchQuery, SearchResultSet } from '@backstage/search-common'; +import { SearchResultSet } from '@backstage/search-common'; import { searchApiRef } from '../../apis'; import { AsyncState } from 'react-use/lib/useAsync'; +import { JsonObject } from '@backstage/config'; type SearchContextValue = { - resultState: AsyncState; - queryState: SearchQuery; - setQueryState: React.Dispatch>; + result: AsyncState; + term: string; + setTerm: React.Dispatch>; + types: string[]; + setTypes: React.Dispatch>; + filters: JsonObject; + setFilters: React.Dispatch>; + pageCursor: string; + setPageCursor: React.Dispatch>; }; const SearchContext = createContext({} as SearchContextValue); @@ -38,23 +45,39 @@ export const SearchContextProvider = ({ initialState = { term: '', pageCursor: '', + filters: {}, types: ['*'], }, children, }: PropsWithChildren<{ initialState?: any }>) => { const searchApi = useApi(searchApiRef); - const [queryState, setQueryState] = useState(initialState); + const [pageCursor, setPageCursor] = useState(initialState.pageCursor); + const [filters, setFilters] = useState(initialState.filters); + const [term, setTerm] = useState(initialState.term); + const [types, setTypes] = useState(initialState.types); - const resultState = useAsync( + const result = useAsync( () => searchApi._alphaPerformSearch({ - term: queryState.term, - pageCursor: queryState.pageCursor, + term, + filters, + pageCursor, + types, }), - [queryState.term], + [term, filters, types, pageCursor], ); - const value: SearchContextValue = { resultState, queryState, setQueryState }; + const value: SearchContextValue = { + result, + filters, + setFilters, + term, + setTerm, + types, + setTypes, + pageCursor, + setPageCursor, + }; return ; };