chore: remove useless file & code

This commit is contained in:
QiShaoXuan 2023-01-05 18:33:17 +08:00
parent 3d2da085e7
commit 27b7c4e8fb
4 changed files with 18 additions and 125 deletions

View File

@ -5,6 +5,7 @@ import type {
Workspace as StoreWorkspace, Workspace as StoreWorkspace,
} from '@blocksuite/store'; } from '@blocksuite/store';
import type { EditorContainer } from '@blocksuite/editor'; import type { EditorContainer } from '@blocksuite/editor';
export type LoadWorkspaceHandler = ( export type LoadWorkspaceHandler = (
workspaceId: string, workspaceId: string,
user?: AccessTokenMessage | null user?: AccessTokenMessage | null
@ -20,7 +21,7 @@ export interface AppStateValue {
currentPage: StorePage | null; currentPage: StorePage | null;
workspaces: Record<string, StoreWorkspace | null>; // workspaces: Record<string, StoreWorkspace | null>;
editor: EditorContainer | null; editor: EditorContainer | null;
synced: boolean; synced: boolean;
@ -53,7 +54,6 @@ export const AppState = createContext<AppStateContext>({
synced: false, synced: false,
// eslint-disable-next-line @typescript-eslint/no-empty-function // eslint-disable-next-line @typescript-eslint/no-empty-function
refreshWorkspacesMeta: () => {}, refreshWorkspacesMeta: () => {},
workspaces: {},
}); });
export const useAppState = () => { export const useAppState = () => {

View File

@ -2,31 +2,13 @@ import { useEffect } from 'react';
import type { Page } from '@blocksuite/store'; import type { Page } from '@blocksuite/store';
import '@blocksuite/blocks'; import '@blocksuite/blocks';
import { EditorContainer } from '@blocksuite/editor'; import { EditorContainer } from '@blocksuite/editor';
import type { LoadWorkspaceHandler, CreateEditorHandler } from './context'; import type { CreateEditorHandler } from './context';
import { getDataCenter } from '@affine/datacenter';
interface Props { interface Props {
setLoadWorkspaceHandler: (handler: LoadWorkspaceHandler) => void;
setCreateEditorHandler: (handler: CreateEditorHandler) => void; setCreateEditorHandler: (handler: CreateEditorHandler) => void;
} }
const DynamicBlocksuite = ({ const DynamicBlocksuite = ({ setCreateEditorHandler }: Props) => {
setLoadWorkspaceHandler,
setCreateEditorHandler,
}: Props) => {
useEffect(() => {
const openWorkspace: LoadWorkspaceHandler = async (workspaceId: string) => {
if (workspaceId) {
const dc = await getDataCenter();
return dc.load(workspaceId, { providerId: 'affine' });
} else {
return null;
}
};
setLoadWorkspaceHandler(openWorkspace);
}, [setLoadWorkspaceHandler]);
useEffect(() => { useEffect(() => {
const createEditorHandler: CreateEditorHandler = (page: Page) => { const createEditorHandler: CreateEditorHandler = (page: Page) => {
const editor = new EditorContainer(); const editor = new EditorContainer();

View File

@ -1,51 +0,0 @@
import { useEffect } from 'react';
import { useRouter } from 'next/router';
import { useAppState } from './context';
import { usePageHelper } from '@/hooks/use-page-helper';
export const useLoadWorkspace = () => {
const router = useRouter();
const { loadWorkspace, currentWorkspace, currentWorkspaceId } = useAppState();
const workspaceId = router.query.workspaceId as string;
useEffect(() => {
loadWorkspace?.(workspaceId);
}, [workspaceId, loadWorkspace]);
return currentWorkspaceId === workspaceId ? currentWorkspace : null;
};
export const useLoadPage = () => {
const router = useRouter();
const { loadPage, currentPage, currentWorkspaceId } = useAppState();
const { createPage } = usePageHelper();
const workspace = useLoadWorkspace();
const pageId = router.query.pageId as string;
useEffect(() => {
if (!workspace) {
return;
}
const page = pageId ? workspace?.getPage(pageId) : null;
if (page) {
loadPage?.(pageId);
return;
}
const savedPageId = workspace.meta.pageMetas[0]?.id;
if (savedPageId) {
router.push(`/workspace/${currentWorkspaceId}/${savedPageId}`);
return;
}
createPage().then(async pageId => {
if (!pageId) {
return;
}
router.push(`/workspace/${currentWorkspaceId}/${pageId}`);
});
}, [workspace, pageId, loadPage, createPage, router, currentWorkspaceId]);
return currentPage?.id === pageId ? currentPage : null;
};

View File

@ -1,4 +1,4 @@
import { useMemo, useState, useEffect, useCallback, useRef } from 'react'; import { useMemo, useState, useCallback, useRef } from 'react';
import type { ReactNode } from 'react'; import type { ReactNode } from 'react';
import dynamic from 'next/dynamic'; import dynamic from 'next/dynamic';
import { getDataCenter } from '@affine/datacenter'; import { getDataCenter } from '@affine/datacenter';
@ -8,12 +8,20 @@ import type {
CreateEditorHandler, CreateEditorHandler,
LoadWorkspaceHandler, LoadWorkspaceHandler,
} from './context'; } from './context';
import { Page, Workspace as StoreWorkspace } from '@blocksuite/store'; import { Page } from '@blocksuite/store';
import { EditorContainer } from '@blocksuite/editor'; import { EditorContainer } from '@blocksuite/editor';
const DynamicBlocksuite = dynamic(() => import('./dynamic-blocksuite'), { const DynamicBlocksuite = dynamic(() => import('./dynamic-blocksuite'), {
ssr: false, ssr: false,
}); });
const loadWorkspaceHandler: LoadWorkspaceHandler = async workspaceId => {
if (workspaceId) {
const dc = await getDataCenter();
return dc.load(workspaceId, { providerId: 'affine' });
} else {
return null;
}
};
export const AppStateProvider = ({ children }: { children?: ReactNode }) => { export const AppStateProvider = ({ children }: { children?: ReactNode }) => {
const refreshWorkspacesMeta = async () => { const refreshWorkspacesMeta = async () => {
const dc = await getDataCenter(); const dc = await getDataCenter();
@ -30,43 +38,10 @@ export const AppStateProvider = ({ children }: { children?: ReactNode }) => {
currentWorkspace: null, currentWorkspace: null,
currentPage: null, currentPage: null,
editor: null, editor: null,
// Synced is used to ensure that the provider has synced with the server,
// So after Synced set to true, the other state is sure to be set.
synced: false,
refreshWorkspacesMeta, refreshWorkspacesMeta,
workspaces: {}, synced: true,
}); });
useEffect(() => {
(async () => {
const workspacesList = await Promise.all(
state.workspacesMeta.map(async ({ id }) => {
const workspace =
(await loadWorkspaceHandler?.(id, state.user)) || null;
return { id, workspace };
})
);
const workspaces: Record<string, StoreWorkspace | null> = {};
workspacesList.forEach(({ id, workspace }) => {
workspaces[id] = workspace;
});
setState(state => ({
...state,
workspaces,
}));
})();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [state.workspacesMeta]);
const [loadWorkspaceHandler, _setLoadWorkspaceHandler] =
useState<LoadWorkspaceHandler>();
const setLoadWorkspaceHandler = useCallback(
(handler: LoadWorkspaceHandler) => {
_setLoadWorkspaceHandler(() => handler);
},
[_setLoadWorkspaceHandler]
);
const [createEditorHandler, _setCreateEditorHandler] = const [createEditorHandler, _setCreateEditorHandler] =
useState<CreateEditorHandler>(); useState<CreateEditorHandler>();
@ -85,7 +60,7 @@ export const AppStateProvider = ({ children }: { children?: ReactNode }) => {
return state.currentWorkspace; return state.currentWorkspace;
} }
const workspace = const workspace =
(await loadWorkspaceHandler?.(workspaceId, state.user)) || null; (await loadWorkspaceHandler(workspaceId, state.user)) || null;
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error // @ts-expect-error
@ -103,6 +78,7 @@ export const AppStateProvider = ({ children }: { children?: ReactNode }) => {
})); }));
return workspace; return workspace;
}; };
const loadPage = useRef<AppStateContext['loadPage']>(() => const loadPage = useRef<AppStateContext['loadPage']>(() =>
Promise.resolve(null) Promise.resolve(null)
); );
@ -147,17 +123,6 @@ export const AppStateProvider = ({ children }: { children?: ReactNode }) => {
setState(state => ({ ...state, editor })); setState(state => ({ ...state, editor }));
}; };
useEffect(() => {
if (!loadWorkspaceHandler) {
return;
}
setState(state => ({
...state,
workspacesMeta: [],
synced: true,
}));
}, [loadWorkspaceHandler]);
const context = useMemo( const context = useMemo(
() => ({ () => ({
...state, ...state,
@ -172,10 +137,7 @@ export const AppStateProvider = ({ children }: { children?: ReactNode }) => {
return ( return (
<AppState.Provider value={context}> <AppState.Provider value={context}>
<DynamicBlocksuite <DynamicBlocksuite setCreateEditorHandler={setCreateEditorHandler} />
setLoadWorkspaceHandler={setLoadWorkspaceHandler}
setCreateEditorHandler={setCreateEditorHandler}
/>
{children} {children}
</AppState.Provider> </AppState.Provider>
); );