Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / applications / drive / src / app / store / _search / useSearchResults.tsx
blob79ec8082a22fa28db01c10f87fac543fee1bfee4
1 import { createContext, useContext, useState } from 'react';
3 import type { ESLink } from './types';
4 import useSearchLibrary from './useSearchLibrary';
6 function useSearchResultsProvider() {
7     const { encryptedSearch, esStatus } = useSearchLibrary();
8     const { dbExists } = esStatus;
10     const [query, setQuery] = useState<string>('');
11     const [isSearching, setIsSearching] = useState(false);
12     const [results, setResults] = useState<ESLink[]>([]);
14     const searchStarted = (query: string) => {
15         setQuery(query);
16         setIsSearching(true);
17     };
19     const runSearch = async (query: string) => {
20         searchStarted(query);
21         await encryptedSearch((results: ESLink[]) => {
22             setResults(results);
23         }).finally(() => {
24             setIsSearching(false);
25         });
26     };
28     return {
29         runSearch,
30         dbExists,
31         query,
32         isSearching,
33         results,
34     };
37 const SearchResultsContext = createContext<ReturnType<typeof useSearchResultsProvider> | null>(null);
39 export function SearchResultsProvider({ children }: { children: React.ReactNode }) {
40     const providerState = useSearchResultsProvider();
41     return <SearchResultsContext.Provider value={providerState}>{children}</SearchResultsContext.Provider>;
44 export default function useSearchResults() {
45     const state = useContext(SearchResultsContext);
46     if (!state) {
47         throw new Error('Trying to use uninitialized SearchResultsProvider');
48     }
49     return state;