Merge branch 'feat/fileSystem' into develop

This commit is contained in:
QiShaoXuan
2022-12-16 17:33:57 +08:00
7 changed files with 47 additions and 33 deletions
+3 -3
View File
@@ -9,10 +9,10 @@
"lint": "next lint" "lint": "next lint"
}, },
"dependencies": { "dependencies": {
"@blocksuite/blocks": "0.3.0-alpha.9", "@blocksuite/blocks": "0.3.0-alpha.10",
"@blocksuite/editor": "0.3.0-alpha.9", "@blocksuite/editor": "0.3.0-alpha.10",
"@blocksuite/icons": "^2.0.0", "@blocksuite/icons": "^2.0.0",
"@blocksuite/store": "0.3.0-alpha.9", "@blocksuite/store": "0.3.0-alpha.10",
"@emotion/css": "^11.10.0", "@emotion/css": "^11.10.0",
"@emotion/react": "^11.10.4", "@emotion/react": "^11.10.4",
"@emotion/server": "^11.10.0", "@emotion/server": "^11.10.0",
@@ -5,18 +5,15 @@ import { useEditor } from '@/providers/editor-provider';
import { useModal } from '@/providers/global-modal-provider'; import { useModal } from '@/providers/global-modal-provider';
export const Footer = (props: { query: string }) => { export const Footer = (props: { query: string }) => {
const { createPage, getPageMeta, openPage } = useEditor(); const { createPage, openPage } = useEditor();
const { triggerQuickSearchModal } = useModal(); const { triggerQuickSearchModal } = useModal();
const query = props.query; const query = props.query;
return ( return (
<StyledModalFooterContent <StyledModalFooterContent
onClick={async () => { onClick={async () => {
const page = await (query const page = await createPage({ title: query });
? createPage({ title: query }) openPage(page.id);
: createPage());
const pageMeta = getPageMeta(page.id);
pageMeta && openPage(pageMeta.id);
triggerQuickSearchModal(); triggerQuickSearchModal();
}} }}
@@ -117,8 +117,7 @@ export const WorkSpaceSliderBar = () => {
<StyledNewPageButton <StyledNewPageButton
onClick={async () => { onClick={async () => {
const page = await createPage(); const page = await createPage();
const pageMeta = getPageMeta(page.id); openPage(page.id);
pageMeta && openPage(pageMeta.id);
}} }}
> >
<AddIcon /> New Page <AddIcon /> New Page
@@ -2,7 +2,7 @@ import '@blocksuite/blocks';
import '@blocksuite/blocks/style'; import '@blocksuite/blocks/style';
import type { EditorContainer } from '@blocksuite/editor'; import type { EditorContainer } from '@blocksuite/editor';
import { BlockSchema, createEditor } from '@blocksuite/editor'; import { BlockSchema, createEditor } from '@blocksuite/editor';
import { generateDefaultPageId, initialPage } from './utils'; import { generateDefaultPageId, initEmptyPage } from './utils';
import { useEffect } from 'react'; import { useEffect } from 'react';
import pkg from '../../../package.json'; import pkg from '../../../package.json';
import { import {
@@ -80,7 +80,7 @@ const EditorReactor = ({
setCurrentPage(page); setCurrentPage(page);
} else { } else {
createPage(workspace!, pageId).then(page => { createPage(workspace!, pageId).then(page => {
initialPage(page); initEmptyPage(page);
setCurrentPage(page); setCurrentPage(page);
}); });
} }
@@ -94,7 +94,7 @@ const EditorReactor = ({
} }
createPage(workspace!, generateDefaultPageId()).then(page => { createPage(workspace!, generateDefaultPageId()).then(page => {
initialPage(page); initEmptyPage(page);
setCurrentPage(page); setCurrentPage(page);
}); });
}, [workspace, routerPageId, setCurrentPage]); }, [workspace, routerPageId, setCurrentPage]);
@@ -1,5 +1,5 @@
import { QueryContent } from '@blocksuite/store/dist/workspace/search'; import { QueryContent } from '@blocksuite/store/dist/workspace/search';
import { createPage, initialPage, generateDefaultPageId } from '../utils'; import { createPage, generateDefaultPageId, initPage } from '../utils';
import { Workspace, Page } from '@blocksuite/store'; import { Workspace, Page } from '@blocksuite/store';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { EditorHandlers, PageMeta } from '../interface'; import { EditorHandlers, PageMeta } from '../interface';
@@ -17,9 +17,12 @@ export const useEditorHandler = ({
const router = useRouter(); const router = useRouter();
return { return {
createPage: async ({ pageId = generateDefaultPageId(), title } = {}) => { createPage: async ({
pageId = generateDefaultPageId(),
title = '',
} = {}) => {
const page = await createPage(workspace!, pageId); const page = await createPage(workspace!, pageId);
initialPage(page, title); initPage(workspace!, page, { title });
return page; return page;
}, },
getPageMeta(pageId) { getPageMeta(pageId) {
@@ -29,6 +32,7 @@ export const useEditorHandler = ({
) as PageMeta; ) as PageMeta;
}, },
openPage: (pageId, query = {}) => { openPage: (pageId, query = {}) => {
pageId = pageId.replace('space:', '');
return router.push({ return router.push({
pathname: '/', pathname: '/',
query: { query: {
@@ -26,10 +26,24 @@ export const createPage = (
}); });
}; };
export const initialPage = (page: Page, title?: string) => { export const initEmptyPage = (page: Page) => {
const pageBlockId = page.addBlock({ flavour: 'affine:page' });
const groupId = page.addBlock({ flavour: 'affine:group' }, pageBlockId);
page.addBlock({ flavour: 'affine:paragraph' }, groupId);
return page;
};
export const initPage = (
workspace: Workspace,
page: Page,
{ title = '' }: { title?: string } = {}
) => {
const pageBlockId = page.addBlock({ flavour: 'affine:page', title }); const pageBlockId = page.addBlock({ flavour: 'affine:page', title });
const groupId = page.addBlock({ flavour: 'affine:group' }, pageBlockId); const groupId = page.addBlock({ flavour: 'affine:group' }, pageBlockId);
page.addBlock({ flavour: 'affine:paragraph' }, groupId); page.addBlock({ flavour: 'affine:paragraph' }, groupId);
if (title) {
workspace!.meta.setPage(page.id.replace('space:', ''), { title });
}
return page; return page;
}; };
+15 -15
View File
@@ -22,10 +22,10 @@ importers:
packages/app: packages/app:
specifiers: specifiers:
'@blocksuite/blocks': 0.3.0-alpha.9 '@blocksuite/blocks': 0.3.0-alpha.10
'@blocksuite/editor': 0.3.0-alpha.9 '@blocksuite/editor': 0.3.0-alpha.10
'@blocksuite/icons': ^2.0.0 '@blocksuite/icons': ^2.0.0
'@blocksuite/store': 0.3.0-alpha.9 '@blocksuite/store': 0.3.0-alpha.10
'@emotion/css': ^11.10.0 '@emotion/css': ^11.10.0
'@emotion/react': ^11.10.4 '@emotion/react': ^11.10.4
'@emotion/server': ^11.10.0 '@emotion/server': ^11.10.0
@@ -55,10 +55,10 @@ importers:
react-dom: 18.2.0 react-dom: 18.2.0
typescript: 4.8.3 typescript: 4.8.3
dependencies: dependencies:
'@blocksuite/blocks': 0.3.0-alpha.9 '@blocksuite/blocks': 0.3.0-alpha.10
'@blocksuite/editor': 0.3.0-alpha.9 '@blocksuite/editor': 0.3.0-alpha.10
'@blocksuite/icons': 2.0.0_w5j4k42lgipnm43s3brx6h3c34 '@blocksuite/icons': 2.0.0_w5j4k42lgipnm43s3brx6h3c34
'@blocksuite/store': 0.3.0-alpha.9 '@blocksuite/store': 0.3.0-alpha.10
'@emotion/css': 11.10.0 '@emotion/css': 11.10.0
'@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 '@emotion/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34
'@emotion/server': 11.10.0_@emotion+css@11.10.0 '@emotion/server': 11.10.0_@emotion+css@11.10.0
@@ -176,10 +176,10 @@ packages:
to-fast-properties: 2.0.0 to-fast-properties: 2.0.0
dev: false dev: false
/@blocksuite/blocks/0.3.0-alpha.9: /@blocksuite/blocks/0.3.0-alpha.10:
resolution: {integrity: sha512-7Zw2lL5DZ+JB6dtmGKfuW19nG5gMvLPcTakK9oMszbhgETnwHUUN382Pz3urecuDA88yaLj8qbC1VdbAQWDW5w==} resolution: {integrity: sha512-tW6AMQTQIkBg4uob+6naAtnNWEgxtX/kBFpV/L1hGW3OHGF6JwpyM/AfzuuS9KooDJvADpb2xeQnNcifJTWGHA==}
dependencies: dependencies:
'@blocksuite/store': 0.3.0-alpha.9 '@blocksuite/store': 0.3.0-alpha.10
'@tldraw/intersect': 1.8.0 '@tldraw/intersect': 1.8.0
'@tldraw/vec': 1.8.0 '@tldraw/vec': 1.8.0
hotkeys-js: 3.10.0 hotkeys-js: 3.10.0
@@ -193,11 +193,11 @@ packages:
- utf-8-validate - utf-8-validate
dev: false dev: false
/@blocksuite/editor/0.3.0-alpha.9: /@blocksuite/editor/0.3.0-alpha.10:
resolution: {integrity: sha512-dnrk87akzwRRKxS18dec2rY2ZvfIpvNq9SIHEPCCk2UNLI2R66HUO5v1RhLi6/oglbWtizcqzQWCa/DjjY1ljA==} resolution: {integrity: sha512-P5PcrYGRmnOeNTdqGDncWjUn5BwCm4j5JvJkjOw80VbvWNcVtWhr2ViBCsgD00m4ZIybxV6o00GOqDNNej2mEQ==}
dependencies: dependencies:
'@blocksuite/blocks': 0.3.0-alpha.9 '@blocksuite/blocks': 0.3.0-alpha.10
'@blocksuite/store': 0.3.0-alpha.9 '@blocksuite/store': 0.3.0-alpha.10
lit: 2.4.0 lit: 2.4.0
marked: 4.1.1 marked: 4.1.1
turndown: 7.1.1 turndown: 7.1.1
@@ -217,8 +217,8 @@ packages:
react: 18.2.0 react: 18.2.0
dev: false dev: false
/@blocksuite/store/0.3.0-alpha.9: /@blocksuite/store/0.3.0-alpha.10:
resolution: {integrity: sha512-5wdnE6JUL1/y/LufqcRg2lRL5mYvdXc+MOj98eNfFAv+JFbY4vuGZ8N9HFn6dQ/rQaQsgaoAZkWyogbbC8x4IA==} resolution: {integrity: sha512-KP88oFu5qAZA1mYbfLZ6D8S90bw8x3d19HhfoOqME0MOHyY6r462NF7wxQh9jlGDsCmyJMf3ZY+z/PxsJIufxQ==}
dependencies: dependencies:
buffer: 6.0.3 buffer: 6.0.3
flexsearch: 0.7.21 flexsearch: 0.7.21