From d66f7da3c062abbddd2867aaafbafef3d5606860 Mon Sep 17 00:00:00 2001 From: Qi <474021214@qq.com> Date: Mon, 10 Jul 2023 17:28:14 +0800 Subject: [PATCH] feat: modify setting modal entry in quick search modal (#3089) (cherry picked from commit 2f910fbad0845a0f7f92df1706b455bed4bea40a) --- .../pure/quick-search-modal/config.ts | 31 ++++++++++++++----- .../pure/quick-search-modal/index.tsx | 9 +++--- .../pure/quick-search-modal/results.tsx | 12 ++++--- .../src/layouts/public-workspace-layout.tsx | 2 +- apps/web/src/layouts/workspace-layout.tsx | 2 +- 5 files changed, 37 insertions(+), 19 deletions(-) diff --git a/apps/web/src/components/pure/quick-search-modal/config.ts b/apps/web/src/components/pure/quick-search-modal/config.ts index c32d074b19..3d665dc089 100644 --- a/apps/web/src/components/pure/quick-search-modal/config.ts +++ b/apps/web/src/components/pure/quick-search-modal/config.ts @@ -1,17 +1,26 @@ import { useAFFiNEI18N } from '@affine/i18n/hooks'; -import { DeleteTemporarilyIcon, FolderIcon } from '@blocksuite/icons'; +import { + DeleteTemporarilyIcon, + FolderIcon, + SettingsIcon, +} from '@blocksuite/icons'; +import { useAtom } from 'jotai'; import type { FC, SVGProps } from 'react'; import { useMemo } from 'react'; +import { openSettingModalAtom } from '../../../atoms'; import { pathGenerator } from '../../../shared'; + export const useSwitchToConfig = ( workspaceId: string ): { title: string; - href: string; + href?: string; + onClick?: () => void; icon: FC>; }[] => { const t = useAFFiNEI18N(); + const [, setOpenSettingModalAtom] = useAtom(openSettingModalAtom); return useMemo( () => [ { @@ -19,17 +28,23 @@ export const useSwitchToConfig = ( href: pathGenerator.all(workspaceId), icon: FolderIcon, }, - // { - // title: t['Workspace Settings'](), - // href: pathGenerator.setting(workspaceId), - // icon: SettingsIcon, - // }, + { + title: t['Workspace Settings'](), + onClick: () => { + setOpenSettingModalAtom({ + open: true, + activeTab: 'workspace', + workspaceId, + }); + }, + icon: SettingsIcon, + }, { title: t['Trash'](), href: pathGenerator.trash(workspaceId), icon: DeleteTemporarilyIcon, }, ], - [workspaceId, t] + [t, workspaceId, setOpenSettingModalAtom] ); }; diff --git a/apps/web/src/components/pure/quick-search-modal/index.tsx b/apps/web/src/components/pure/quick-search-modal/index.tsx index 5ac4fd5bbb..0205cf47ba 100644 --- a/apps/web/src/components/pure/quick-search-modal/index.tsx +++ b/apps/web/src/components/pure/quick-search-modal/index.tsx @@ -12,7 +12,7 @@ import { useTransition, } from 'react'; -import type { BlockSuiteWorkspace } from '../../../shared'; +import type { AllWorkspace } from '../../../shared'; import { Footer } from './footer'; import { PublishedResults } from './published-results'; import { Results } from './results'; @@ -26,7 +26,7 @@ import { } from './style'; export type QuickSearchModalProps = { - blockSuiteWorkspace: BlockSuiteWorkspace; + workspace: AllWorkspace; open: boolean; setOpen: (value: boolean) => void; router: NextRouter; @@ -36,8 +36,9 @@ export const QuickSearchModal: React.FC = ({ open, setOpen, router, - blockSuiteWorkspace, + workspace, }) => { + const blockSuiteWorkspace = workspace?.blockSuiteWorkspace; const t = useAFFiNEI18N(); const inputRef = useRef(null); const [loading, startTransition] = useTransition(); @@ -171,7 +172,7 @@ export const QuickSearchModal: React.FC = ({ query={query} onClose={handleClose} router={router} - blockSuiteWorkspace={blockSuiteWorkspace} + workspace={workspace} setShowCreatePage={setShowCreatePage} /> )} diff --git a/apps/web/src/components/pure/quick-search-modal/results.tsx b/apps/web/src/components/pure/quick-search-modal/results.tsx index 1318cd7b09..651a9a1336 100644 --- a/apps/web/src/components/pure/quick-search-modal/results.tsx +++ b/apps/web/src/components/pure/quick-search-modal/results.tsx @@ -13,12 +13,12 @@ import { useEffect } from 'react'; import { recentPageSettingsAtom } from '../../../atoms'; import { useRouterHelper } from '../../../hooks/use-router-helper'; -import type { BlockSuiteWorkspace } from '../../../shared'; +import type { AllWorkspace } from '../../../shared'; import { useSwitchToConfig } from './config'; import { StyledListItem, StyledNotFound } from './style'; export type ResultsProps = { - blockSuiteWorkspace: BlockSuiteWorkspace; + workspace: AllWorkspace; query: string; onClose: () => void; setShowCreatePage: Dispatch>; @@ -26,15 +26,16 @@ export type ResultsProps = { }; export const Results: FC = ({ query, - blockSuiteWorkspace, + workspace, setShowCreatePage, router, onClose, }) => { + const blockSuiteWorkspace = workspace.blockSuiteWorkspace; useBlockSuiteWorkspaceHelper(blockSuiteWorkspace); const pageList = useBlockSuitePageMeta(blockSuiteWorkspace); assertExists(blockSuiteWorkspace.id); - const List = useSwitchToConfig(blockSuiteWorkspace.id); + const List = useSwitchToConfig(workspace.id); const recentPageSetting = useAtomValue(recentPageSettingsAtom); const t = useAFFiNEI18N(); @@ -100,7 +101,8 @@ export const Results: FC = ({ value={link.title} onSelect={() => { onClose(); - router.push(link.href).catch(console.error); + link.href && router.push(link.href).catch(console.error); + link.onClick?.(); }} > diff --git a/apps/web/src/layouts/public-workspace-layout.tsx b/apps/web/src/layouts/public-workspace-layout.tsx index 241f018917..a0c3dc27ab 100644 --- a/apps/web/src/layouts/public-workspace-layout.tsx +++ b/apps/web/src/layouts/public-workspace-layout.tsx @@ -30,7 +30,7 @@ export const PublicQuickSearch: React.FC = ({ return ( { } return (