feat: new setting modal (#2834)

Co-authored-by: Alex Yang <himself65@outlook.com>
This commit is contained in:
Qi
2023-06-21 19:57:59 +08:00
committed by GitHub
parent 9a90ce694c
commit aa86d3a2ee
64 changed files with 1911 additions and 159 deletions

View File

@@ -1,4 +1,4 @@
import { AppContainer, MainContainer } from '@affine/component/workspace';
import { MainContainer } from '@affine/component/workspace';
import type { AffinePublicWorkspace } from '@affine/env/workspace';
import { useAtom } from 'jotai';
import Head from 'next/head';
@@ -7,6 +7,7 @@ import type React from 'react';
import { lazy, Suspense } from 'react';
import { openQuickSearchModalAtom } from '../atoms';
import { AppContainer } from '../components/affine/app-container';
import { useRouterTitle } from '../hooks/use-router-title';
const QuickSearchModal = lazy(() =>

View File

@@ -4,7 +4,6 @@ import { appSidebarResizingAtom } from '@affine/component/app-sidebar';
import type { DraggableTitleCellData } from '@affine/component/page-list';
import { StyledTitleLink } from '@affine/component/page-list';
import {
AppContainer,
MainContainer,
ToolContainer,
WorkspaceFallback,
@@ -42,12 +41,17 @@ import type { FC, PropsWithChildren, ReactElement } from 'react';
import { lazy, Suspense, useCallback, useEffect, useMemo } from 'react';
import { WorkspaceAdapters } from '../adapters/workspace';
import { openQuickSearchModalAtom, openWorkspacesModalAtom } from '../atoms';
import {
openQuickSearchModalAtom,
openSettingModalAtom,
openWorkspacesModalAtom,
} from '../atoms';
import { useTrackRouterHistoryEffect } from '../atoms/history';
import {
publicWorkspaceAtom,
publicWorkspaceIdAtom,
} from '../atoms/public-workspace';
import { AppContainer } from '../components/affine/app-container';
import type { IslandItemNames } from '../components/pure/help-island';
import { HelpIsland } from '../components/pure/help-island';
import {
@@ -71,6 +75,11 @@ const QuickSearchModal = lazy(() =>
default: module.QuickSearchModal,
}))
);
const SettingModal = lazy(() =>
import('../components/affine/setting-modal').then(module => ({
default: module.SettingModal,
}))
);
export const PublicQuickSearch: FC = () => {
const publicWorkspace = useAtomValue(publicWorkspaceAtom);
@@ -119,6 +128,25 @@ export const QuickSearch: FC = () => {
/>
);
};
export const Setting: FC = () => {
const [currentWorkspace] = useCurrentWorkspace();
const router = useRouter();
const [openSettingModal, setOpenSettingModalAtom] =
useAtom(openSettingModalAtom);
const blockSuiteWorkspace = currentWorkspace?.blockSuiteWorkspace;
const isPublicWorkspace =
router.pathname.split('/')[1] === 'public-workspace';
if (!blockSuiteWorkspace || isPublicWorkspace) {
return null;
}
return (
<SettingModal
open={openSettingModal}
setOpen={setOpenSettingModalAtom}
router={router}
/>
);
};
const logger = new DebugLogger('workspace-layout');
@@ -390,6 +418,12 @@ export const WorkspaceLayoutInner: FC<PropsWithChildren> = ({ children }) => {
setOpenQuickSearchModalAtom(true);
}, [setOpenQuickSearchModalAtom]);
const [, setOpenSettingModalAtom] = useAtom(openSettingModalAtom);
const handleOpenSettingModal = useCallback(() => {
setOpenSettingModalAtom(true);
}, [setOpenSettingModalAtom]);
const resizing = useAtomValue(appSidebarResizingAtom);
const sensors = useSensors(
@@ -444,6 +478,7 @@ export const WorkspaceLayoutInner: FC<PropsWithChildren> = ({ children }) => {
<RootAppSidebar
isPublicWorkspace={isPublicWorkspace}
onOpenQuickSearchModal={handleOpenQuickSearchModal}
onOpenSettingModal={handleOpenSettingModal}
currentWorkspace={currentWorkspace}
onOpenWorkspaceListModal={handleOpenWorkspaceListModal}
openPage={useCallback(
@@ -476,6 +511,7 @@ export const WorkspaceLayoutInner: FC<PropsWithChildren> = ({ children }) => {
<PageListTitleCellDragOverlay />
</DndContext>
<QuickSearch />
<Setting />
</>
);
};