mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 04:18:54 +00:00
feat: modify setting modal entry in quick search modal (#3089)
(cherry picked from commit 2f910fbad0)
This commit is contained in:
@@ -1,17 +1,26 @@
|
|||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
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 type { FC, SVGProps } from 'react';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import { openSettingModalAtom } from '../../../atoms';
|
||||||
import { pathGenerator } from '../../../shared';
|
import { pathGenerator } from '../../../shared';
|
||||||
|
|
||||||
export const useSwitchToConfig = (
|
export const useSwitchToConfig = (
|
||||||
workspaceId: string
|
workspaceId: string
|
||||||
): {
|
): {
|
||||||
title: string;
|
title: string;
|
||||||
href: string;
|
href?: string;
|
||||||
|
onClick?: () => void;
|
||||||
icon: FC<SVGProps<SVGSVGElement>>;
|
icon: FC<SVGProps<SVGSVGElement>>;
|
||||||
}[] => {
|
}[] => {
|
||||||
const t = useAFFiNEI18N();
|
const t = useAFFiNEI18N();
|
||||||
|
const [, setOpenSettingModalAtom] = useAtom(openSettingModalAtom);
|
||||||
return useMemo(
|
return useMemo(
|
||||||
() => [
|
() => [
|
||||||
{
|
{
|
||||||
@@ -19,17 +28,23 @@ export const useSwitchToConfig = (
|
|||||||
href: pathGenerator.all(workspaceId),
|
href: pathGenerator.all(workspaceId),
|
||||||
icon: FolderIcon,
|
icon: FolderIcon,
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// title: t['Workspace Settings'](),
|
title: t['Workspace Settings'](),
|
||||||
// href: pathGenerator.setting(workspaceId),
|
onClick: () => {
|
||||||
// icon: SettingsIcon,
|
setOpenSettingModalAtom({
|
||||||
// },
|
open: true,
|
||||||
|
activeTab: 'workspace',
|
||||||
|
workspaceId,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
icon: SettingsIcon,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: t['Trash'](),
|
title: t['Trash'](),
|
||||||
href: pathGenerator.trash(workspaceId),
|
href: pathGenerator.trash(workspaceId),
|
||||||
icon: DeleteTemporarilyIcon,
|
icon: DeleteTemporarilyIcon,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[workspaceId, t]
|
[t, workspaceId, setOpenSettingModalAtom]
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
useTransition,
|
useTransition,
|
||||||
} from 'react';
|
} from 'react';
|
||||||
|
|
||||||
import type { BlockSuiteWorkspace } from '../../../shared';
|
import type { AllWorkspace } from '../../../shared';
|
||||||
import { Footer } from './footer';
|
import { Footer } from './footer';
|
||||||
import { PublishedResults } from './published-results';
|
import { PublishedResults } from './published-results';
|
||||||
import { Results } from './results';
|
import { Results } from './results';
|
||||||
@@ -26,7 +26,7 @@ import {
|
|||||||
} from './style';
|
} from './style';
|
||||||
|
|
||||||
export type QuickSearchModalProps = {
|
export type QuickSearchModalProps = {
|
||||||
blockSuiteWorkspace: BlockSuiteWorkspace;
|
workspace: AllWorkspace;
|
||||||
open: boolean;
|
open: boolean;
|
||||||
setOpen: (value: boolean) => void;
|
setOpen: (value: boolean) => void;
|
||||||
router: NextRouter;
|
router: NextRouter;
|
||||||
@@ -36,8 +36,9 @@ export const QuickSearchModal: React.FC<QuickSearchModalProps> = ({
|
|||||||
open,
|
open,
|
||||||
setOpen,
|
setOpen,
|
||||||
router,
|
router,
|
||||||
blockSuiteWorkspace,
|
workspace,
|
||||||
}) => {
|
}) => {
|
||||||
|
const blockSuiteWorkspace = workspace?.blockSuiteWorkspace;
|
||||||
const t = useAFFiNEI18N();
|
const t = useAFFiNEI18N();
|
||||||
const inputRef = useRef<HTMLInputElement>(null);
|
const inputRef = useRef<HTMLInputElement>(null);
|
||||||
const [loading, startTransition] = useTransition();
|
const [loading, startTransition] = useTransition();
|
||||||
@@ -171,7 +172,7 @@ export const QuickSearchModal: React.FC<QuickSearchModalProps> = ({
|
|||||||
query={query}
|
query={query}
|
||||||
onClose={handleClose}
|
onClose={handleClose}
|
||||||
router={router}
|
router={router}
|
||||||
blockSuiteWorkspace={blockSuiteWorkspace}
|
workspace={workspace}
|
||||||
setShowCreatePage={setShowCreatePage}
|
setShowCreatePage={setShowCreatePage}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -13,12 +13,12 @@ import { useEffect } from 'react';
|
|||||||
|
|
||||||
import { recentPageSettingsAtom } from '../../../atoms';
|
import { recentPageSettingsAtom } from '../../../atoms';
|
||||||
import { useRouterHelper } from '../../../hooks/use-router-helper';
|
import { useRouterHelper } from '../../../hooks/use-router-helper';
|
||||||
import type { BlockSuiteWorkspace } from '../../../shared';
|
import type { AllWorkspace } from '../../../shared';
|
||||||
import { useSwitchToConfig } from './config';
|
import { useSwitchToConfig } from './config';
|
||||||
import { StyledListItem, StyledNotFound } from './style';
|
import { StyledListItem, StyledNotFound } from './style';
|
||||||
|
|
||||||
export type ResultsProps = {
|
export type ResultsProps = {
|
||||||
blockSuiteWorkspace: BlockSuiteWorkspace;
|
workspace: AllWorkspace;
|
||||||
query: string;
|
query: string;
|
||||||
onClose: () => void;
|
onClose: () => void;
|
||||||
setShowCreatePage: Dispatch<SetStateAction<boolean>>;
|
setShowCreatePage: Dispatch<SetStateAction<boolean>>;
|
||||||
@@ -26,15 +26,16 @@ export type ResultsProps = {
|
|||||||
};
|
};
|
||||||
export const Results: FC<ResultsProps> = ({
|
export const Results: FC<ResultsProps> = ({
|
||||||
query,
|
query,
|
||||||
blockSuiteWorkspace,
|
workspace,
|
||||||
setShowCreatePage,
|
setShowCreatePage,
|
||||||
router,
|
router,
|
||||||
onClose,
|
onClose,
|
||||||
}) => {
|
}) => {
|
||||||
|
const blockSuiteWorkspace = workspace.blockSuiteWorkspace;
|
||||||
useBlockSuiteWorkspaceHelper(blockSuiteWorkspace);
|
useBlockSuiteWorkspaceHelper(blockSuiteWorkspace);
|
||||||
const pageList = useBlockSuitePageMeta(blockSuiteWorkspace);
|
const pageList = useBlockSuitePageMeta(blockSuiteWorkspace);
|
||||||
assertExists(blockSuiteWorkspace.id);
|
assertExists(blockSuiteWorkspace.id);
|
||||||
const List = useSwitchToConfig(blockSuiteWorkspace.id);
|
const List = useSwitchToConfig(workspace.id);
|
||||||
|
|
||||||
const recentPageSetting = useAtomValue(recentPageSettingsAtom);
|
const recentPageSetting = useAtomValue(recentPageSettingsAtom);
|
||||||
const t = useAFFiNEI18N();
|
const t = useAFFiNEI18N();
|
||||||
@@ -100,7 +101,8 @@ export const Results: FC<ResultsProps> = ({
|
|||||||
value={link.title}
|
value={link.title}
|
||||||
onSelect={() => {
|
onSelect={() => {
|
||||||
onClose();
|
onClose();
|
||||||
router.push(link.href).catch(console.error);
|
link.href && router.push(link.href).catch(console.error);
|
||||||
|
link.onClick?.();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<StyledListItem>
|
<StyledListItem>
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export const PublicQuickSearch: React.FC<PublicQuickSearchProps> = ({
|
|||||||
return (
|
return (
|
||||||
<Suspense>
|
<Suspense>
|
||||||
<QuickSearchModal
|
<QuickSearchModal
|
||||||
blockSuiteWorkspace={workspace.blockSuiteWorkspace}
|
workspace={workspace}
|
||||||
open={openQuickSearchModal}
|
open={openQuickSearchModal}
|
||||||
setOpen={setOpenQuickSearchModalAtom}
|
setOpen={setOpenQuickSearchModalAtom}
|
||||||
router={router}
|
router={router}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ export const QuickSearch: FC = () => {
|
|||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<QuickSearchModal
|
<QuickSearchModal
|
||||||
blockSuiteWorkspace={currentWorkspace?.blockSuiteWorkspace}
|
workspace={currentWorkspace}
|
||||||
open={openQuickSearchModal}
|
open={openQuickSearchModal}
|
||||||
setOpen={setOpenQuickSearchModalAtom}
|
setOpen={setOpenQuickSearchModalAtom}
|
||||||
router={router}
|
router={router}
|
||||||
|
|||||||
Reference in New Issue
Block a user