import { Command } from 'cmdk'; import { StyledListItem, StyledNotFound } from './style'; import { useModal } from '@/providers/GlobalModalProvider'; import { PaperIcon, EdgelessIcon } from '@blocksuite/icons'; import { Dispatch, SetStateAction, useEffect, useState } from 'react'; import { useAppState } from '@/providers/app-state-provider'; import { useRouter } from 'next/router'; import { useSwitchToConfig } from './config'; import { NoResultSVG } from './NoResultSVG'; import { useTranslation } from 'react-i18next'; import usePageHelper from '@/hooks/use-page-helper'; import usePageMetaList from '@/hooks/use-page-meta-list'; export const Results = (props: { query: string; loading: boolean; setLoading: Dispatch>; setShowCreatePage: Dispatch>; }) => { const query = props.query; const loading = props.loading; const setLoading = props.setLoading; const setShowCreatePage = props.setShowCreatePage; const { triggerQuickSearchModal } = useModal(); const pageMetaList = usePageMetaList(); const { openPage } = usePageHelper(); const router = useRouter(); const { currentWorkspaceId } = useAppState(); const { search } = usePageHelper(); const List = useSwitchToConfig(currentWorkspaceId); const [results, setResults] = useState(new Map()); const { t } = useTranslation(); useEffect(() => { setResults(search(query)); setLoading(false); //Save the Map obtained from the search as state // eslint-disable-next-line react-hooks/exhaustive-deps }, [query, setResults, setLoading]); const pageIds = [...results.values()]; const resultsPageMeta = pageMetaList.filter( page => pageIds.indexOf(page.id) > -1 && !page.trash ); useEffect(() => { setShowCreatePage(resultsPageMeta.length ? false : true); //Determine whether to display the ‘+ New page’ }, [resultsPageMeta, setShowCreatePage]); return loading ? null : ( <> {query ? ( resultsPageMeta.length ? ( {resultsPageMeta.map(result => { return ( { openPage(result.id); triggerQuickSearchModal(); }} value={result.id} > {result.mode === 'edgeless' ? ( ) : ( )} {result.title} ); })} ) : ( {t('Find 0 result')} ) ) : ( {List.map(link => { return ( { router.push(link.href); triggerQuickSearchModal(); }} > {link.title} ); })} )} ); };