chore: remove useEditor

This commit is contained in:
QiShaoXuan
2022-12-20 19:30:38 +08:00
parent dacdb4f7d4
commit 2ede288724
28 changed files with 303 additions and 141 deletions
+68 -31
View File
@@ -1,51 +1,88 @@
import { Page } from '@blocksuite/store';
import { PageMeta } from '@/providers/editor-provider';
import { Workspace } from '@blocksuite/store';
import { QueryContent } from '@blocksuite/store/dist/workspace/search';
import { useAppState } from '@/providers/app-state-provider';
import { EditorContainer } from '@blocksuite/editor';
import { useChangePageMeta } from '@/hooks/use-change-page-meta';
import { useRouter } from 'next/router';
export type EditorHandlers = {
// createPage: (params?: { pageId?: string; title?: string }) => Promise<Page>;
// openPage: (
// pageId: string,
// query?: { [key: string]: string }
// ) => Promise<boolean>;
openPage: (
pageId: string,
query?: { [key: string]: string }
) => Promise<boolean>;
// getPageMeta: (pageId?: string) => PageMeta;
toggleDeletePage: (pageId: string) => void;
toggleFavoritePage: (pageId: string) => void;
// permanentlyDeletePage: (pageId: string) => void;
search: (query: string) => Map<string, string | undefined>;
toggleDeletePage: (pageId: string) => Promise<boolean>;
toggleFavoritePage: (pageId: string) => Promise<boolean>;
permanentlyDeletePage: (pageId: string) => void;
search: (query: QueryContent) => Map<string, string | undefined>;
// changeEditorMode: (pageId: string) => void;
changePageMode: (
pageId: string,
mode: EditorContainer['mode']
) => Promise<EditorContainer['mode']>;
};
const getPageMeta = (workspace: Workspace | null, pageId: string) => {
return workspace?.meta.pageMetas.find(p => p.id === pageId);
};
export const usePageHelper = (): EditorHandlers => {
const { currentWorkspace } = useAppState();
const router = useRouter();
const changePageMeta = useChangePageMeta();
const { currentWorkspace, editor, currentWorkspaceId } = useAppState();
return {
toggleFavoritePage: (pageId: string) => {
if (!currentWorkspace) {
return;
}
const pageMeta = currentWorkspace.meta.pageMetas.find(
p => p.id === pageId
);
if (pageMeta) {
currentWorkspace.setPageMeta(pageId, {
favorite: !pageMeta.favorite,
});
toggleFavoritePage: async pageId => {
const pageMeta = getPageMeta(currentWorkspace, pageId);
if (!pageMeta) {
return Promise.reject('No page');
}
const favorite = !pageMeta.favorite;
changePageMeta(pageMeta.id, {
favorite,
});
return favorite;
},
toggleDeletePage: (pageId: string) => {
const pageMeta = currentWorkspace?.meta.pageMetas.find(
p => p.id === pageId
);
if (pageMeta) {
currentWorkspace!.setPageMeta(pageId, {
trash: !pageMeta.trash,
trashDate: +new Date(),
});
toggleDeletePage: async pageId => {
const pageMeta = getPageMeta(currentWorkspace, pageId);
if (!pageMeta) {
return Promise.reject('No page');
}
const trash = !pageMeta.trash;
changePageMeta(pageMeta.id, {
trash,
trashDate: +new Date(),
});
return trash;
},
search: (query: string) => {
return currentWorkspace!.search(query);
},
changePageMode: async (pageId, mode) => {
const pageMeta = getPageMeta(currentWorkspace, pageId);
if (!pageMeta) {
return Promise.reject('No page');
}
editor?.setAttribute('mode', mode as string);
changePageMeta(pageMeta.id, {
mode,
});
return mode;
},
permanentlyDeletePage: pageId => {
// TODO: workspace.meta.removePage or workspace.removePage?
currentWorkspace!.meta.removePage(pageId);
},
openPage: (pageId, query = {}) => {
pageId = pageId.replace('space:', '');
return router.push({
pathname: `/workspace/${currentWorkspaceId}/${pageId}`,
query,
});
},
};
};