UNPKG

@yext/search-ui-react

Version:

A library of React Components for powering Yext Search integrations

45 lines (39 loc) 1.46 kB
import { useCallback, useEffect, useState } from 'react'; import { RecentSearches, ISearch } from 'recent-searches'; export function useRecentSearches( recentSearchesLimit: number, verticalKey: string | undefined ): [ISearch[] | undefined, (input: string) => void, () => void] { const recentSearchesKey = getRecentSearchesKey(verticalKey); const [recentSearches, setRecentSeaches] = useState<RecentSearches>( new RecentSearches({ limit: recentSearchesLimit, namespace: recentSearchesKey }) ); const clearRecentSearches = useCallback(() => { localStorage.removeItem(recentSearchesKey); setRecentSeaches(new RecentSearches({ limit: recentSearchesLimit, namespace: recentSearchesKey })); localStorage.removeItem(recentSearchesKey); }, [recentSearchesKey, recentSearchesLimit]); const setRecentSearch = useCallback((input: string) => { recentSearches.setRecentSearch(input); }, [recentSearches]); useEffect(() => { setRecentSeaches(new RecentSearches({ limit: recentSearchesLimit, namespace: recentSearchesKey })); }, [recentSearchesKey, recentSearchesLimit]); return [recentSearches?.getRecentSearches(), setRecentSearch, clearRecentSearches]; } function getRecentSearchesKey(verticalKey: string | undefined): string { if (verticalKey) { return `__yxt_recent_searches_${verticalKey}__`; } else { return '__yxt_recent_searches_universal__'; } }