import { Command } from 'cmdk'; import { StyledListItem, StyledNotFound } from './style'; import { PaperIcon, EdgelessIcon } from '@blocksuite/icons'; import { Dispatch, SetStateAction, useEffect, useState } from 'react'; import { useAppState, PageMeta } from '@/providers/app-state-provider'; import { useRouter } from 'next/router'; import { NoResultSVG } from './NoResultSVG'; import { useTranslation } from '@affine/i18n'; import usePageHelper from '@/hooks/use-page-helper'; import { Workspace } from '@blocksuite/store'; export const PublishedResults = (props: { query: string; loading: boolean; setLoading: Dispatch>; setPublishWorkspaceName: Dispatch>; onClose: () => void; }) => { const [workspace, setWorkspace] = useState(); const { query, loading, setLoading, onClose, setPublishWorkspaceName } = props; const { search } = usePageHelper(); const [results, setResults] = useState(new Map()); const { dataCenter } = useAppState(); const router = useRouter(); const [pageList, setPageList] = useState([]); useEffect(() => { dataCenter .loadPublicWorkspace(router.query.workspaceId as string) .then(data => { setPageList(data.blocksuiteWorkspace?.meta.pageMetas as PageMeta[]); if (data.blocksuiteWorkspace) { setWorkspace(data.blocksuiteWorkspace); setPublishWorkspaceName(data.blocksuiteWorkspace.meta.name); } }) .catch(() => { router.push('/404'); }); }, [router, dataCenter, setPublishWorkspaceName]); const { t } = useTranslation(); useEffect(() => { setResults(search(query, workspace)); 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 = pageList.filter( page => pageIds.indexOf(page.id) > -1 && !page.trash ); return loading ? null : ( <> {query ? ( resultsPageMeta.length ? ( {resultsPageMeta.map(result => { return ( { router.push( `/public-workspace/${router.query.workspaceId}/${result.id}` ); onClose(); }} value={result.id} > {result.mode === 'edgeless' ? ( ) : ( )} {result.title} ); })} ) : ( {t('Find 0 result')} ) ) : ( <> )} ); };