refactor: simplify code (#3231)

(cherry picked from commit 5864f8cb9a)
This commit is contained in:
Alex Yang
2023-07-14 15:47:51 +08:00
committed by Alex Yang
parent 27fa5654af
commit e1a62c1f03
5 changed files with 19 additions and 28 deletions

View File

@@ -15,7 +15,7 @@ import {
UnpinIcon,
ViewLayersIcon,
} from '@blocksuite/icons';
import type { PageMeta } from '@blocksuite/store';
import type { PageMeta, Workspace } from '@blocksuite/store';
import type { DragEndEvent } from '@dnd-kit/core';
import { useDroppable } from '@dnd-kit/core';
import * as Collapsible from '@radix-ui/react-collapsible';
@@ -25,7 +25,6 @@ import type { ReactElement } from 'react';
import React, { useCallback, useMemo, useState } from 'react';
import { useGetPageInfoById } from '../../../../hooks/use-get-page-info';
import type { AllWorkspace } from '../../../../shared';
import { filterPage } from '../../../../utils/filter';
import type { CollectionsListProps } from '../index';
import { Page } from './page';
@@ -126,7 +125,7 @@ const CollectionRenderer = ({
}: {
collection: Collection;
pages: PageMeta[];
workspace: AllWorkspace;
workspace: Workspace;
getPageInfo: GetPageInfoById;
}) => {
const [collapsed, setCollapsed] = React.useState(true);
@@ -189,7 +188,7 @@ const CollectionRenderer = ({
return (
<Collapsible.Root open={!collapsed}>
<EditCollectionModel
propertiesMeta={workspace.blockSuiteWorkspace.meta.properties}
propertiesMeta={workspace.meta.properties}
getPageInfo={getPageInfo}
init={collection}
onConfirm={setting.saveCollection}
@@ -253,9 +252,9 @@ const CollectionRenderer = ({
</Collapsible.Root>
);
};
export const CollectionsList = ({ currentWorkspace }: CollectionsListProps) => {
const metas = useBlockSuitePageMeta(currentWorkspace.blockSuiteWorkspace);
const { savedCollections } = useSavedCollections(currentWorkspace.id);
export const CollectionsList = ({ workspace }: CollectionsListProps) => {
const metas = useBlockSuitePageMeta(workspace);
const { savedCollections } = useSavedCollections(workspace.id);
const getPageInfo = useGetPageInfoById();
return (
<div data-testid="collections" className={styles.wrapper}>
@@ -268,7 +267,7 @@ export const CollectionsList = ({ currentWorkspace }: CollectionsListProps) => {
key={view.id}
collection={view}
pages={metas}
workspace={currentWorkspace}
workspace={workspace}
/>
);
})}

View File

@@ -19,7 +19,6 @@ import React, { useCallback, useMemo } from 'react';
import { pageSettingFamily } from '../../../../atoms';
import { useBlockSuiteMetaHelper } from '../../../../hooks/affine/use-block-suite-meta-helper';
import type { AllWorkspace } from '../../../../shared';
import { ReferencePage } from '../components/reference-page';
import * as styles from './styles.css';
@@ -130,7 +129,7 @@ export const Page = ({
removeFromAllowList: (id: string) => void;
inExcludeList: boolean;
addToExcludeList: (id: string) => void;
workspace: AllWorkspace;
workspace: Workspace;
allPageMeta: Record<string, PageMeta>;
}) => {
const [collapsed, setCollapsed] = React.useState(true);
@@ -140,10 +139,7 @@ export const Page = ({
const active = router.query.pageId === pageId;
const setting = useAtomValue(pageSettingFamily(pageId));
const icon = setting?.mode === 'edgeless' ? <EdgelessIcon /> : <PageIcon />;
const references = useBlockSuitePageReferences(
workspace.blockSuiteWorkspace,
pageId
);
const references = useBlockSuitePageReferences(workspace, pageId);
const clickPage = useCallback(() => {
return router.push(`/workspace/${workspace.id}/${page.id}`);
}, [page.id, router, workspace.id]);
@@ -170,7 +166,7 @@ export const Page = ({
inExcludeList={inExcludeList}
addToExcludeList={addToExcludeList}
page={page}
workspace={workspace.blockSuiteWorkspace}
workspace={workspace}
/>
</div>
}
@@ -189,7 +185,7 @@ export const Page = ({
return (
<ReferencePage
key={id}
workspace={workspace.blockSuiteWorkspace}
workspace={workspace}
pageId={id}
metaMapping={allPageMeta}
parentIds={new Set([pageId])}

View File

@@ -6,8 +6,8 @@ import { ReferencePage } from '../components/reference-page';
import type { FavoriteListProps } from '../index';
import EmptyItem from './empty-item';
export const FavoriteList = ({ currentWorkspace }: FavoriteListProps) => {
const metas = useBlockSuitePageMeta(currentWorkspace.blockSuiteWorkspace);
export const FavoriteList = ({ workspace }: FavoriteListProps) => {
const metas = useBlockSuitePageMeta(workspace);
const favoriteList = useMemo(
() => metas.filter(p => p.favorite && !p.trash),
@@ -36,7 +36,7 @@ export const FavoriteList = ({ currentWorkspace }: FavoriteListProps) => {
pageId={pageMeta.id}
// memo?
parentIds={new Set()}
workspace={currentWorkspace.blockSuiteWorkspace}
workspace={workspace}
/>
);
})}

View File

@@ -1,9 +1,9 @@
import type { AllWorkspace } from '../../../shared';
import type { Workspace } from '@blocksuite/store';
export type FavoriteListProps = {
currentWorkspace: AllWorkspace;
workspace: Workspace;
};
export type CollectionsListProps = {
currentWorkspace: AllWorkspace;
workspace: Workspace;
};

View File

@@ -189,13 +189,9 @@ export const RootAppSidebar = ({
<SidebarScrollableContainer>
<CategoryDivider label={t['Favorites']()} />
{blockSuiteWorkspace && (
<FavoriteList currentWorkspace={currentWorkspace} />
)}
<FavoriteList workspace={blockSuiteWorkspace} />
<CategoryDivider label={t['Collections']()} />
{blockSuiteWorkspace && (
<CollectionsList currentWorkspace={currentWorkspace} />
)}
<CollectionsList workspace={blockSuiteWorkspace} />
<CategoryDivider label={t['others']()} />
<RouteMenuLinkItem
ref={trashDroppable.setNodeRef}