diff --git a/packages/app/package.json b/packages/app/package.json index 46964ecf32..c24f2567f3 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -9,10 +9,10 @@ "lint": "next lint" }, "dependencies": { - "@blocksuite/blocks": "0.3.0-alpha.9", - "@blocksuite/editor": "0.3.0-alpha.9", + "@blocksuite/blocks": "0.3.0-alpha.10", + "@blocksuite/editor": "0.3.0-alpha.10", "@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/react": "^11.10.4", "@emotion/server": "^11.10.0", diff --git a/packages/app/src/components/quick-search/footer.tsx b/packages/app/src/components/quick-search/footer.tsx index c9f3636142..9666f7f1b7 100644 --- a/packages/app/src/components/quick-search/footer.tsx +++ b/packages/app/src/components/quick-search/footer.tsx @@ -5,18 +5,15 @@ import { useEditor } from '@/providers/editor-provider'; import { useModal } from '@/providers/global-modal-provider'; export const Footer = (props: { query: string }) => { - const { createPage, getPageMeta, openPage } = useEditor(); + const { createPage, openPage } = useEditor(); const { triggerQuickSearchModal } = useModal(); const query = props.query; return ( { - const page = await (query - ? createPage({ title: query }) - : createPage()); - const pageMeta = getPageMeta(page.id); - pageMeta && openPage(pageMeta.id); + const page = await createPage({ title: query }); + openPage(page.id); triggerQuickSearchModal(); }} diff --git a/packages/app/src/components/workspace-slider-bar/index.tsx b/packages/app/src/components/workspace-slider-bar/index.tsx index 9c1616a63c..93c4c41af8 100644 --- a/packages/app/src/components/workspace-slider-bar/index.tsx +++ b/packages/app/src/components/workspace-slider-bar/index.tsx @@ -117,8 +117,7 @@ export const WorkSpaceSliderBar = () => { { const page = await createPage(); - const pageMeta = getPageMeta(page.id); - pageMeta && openPage(pageMeta.id); + openPage(page.id); }} > New Page diff --git a/packages/app/src/providers/editor-provider/editor-reactor.tsx b/packages/app/src/providers/editor-provider/editor-reactor.tsx index bbaacb876d..6920adc09a 100644 --- a/packages/app/src/providers/editor-provider/editor-reactor.tsx +++ b/packages/app/src/providers/editor-provider/editor-reactor.tsx @@ -2,7 +2,7 @@ import '@blocksuite/blocks'; import '@blocksuite/blocks/style'; import type { EditorContainer } from '@blocksuite/editor'; import { BlockSchema, createEditor } from '@blocksuite/editor'; -import { generateDefaultPageId, initialPage } from './utils'; +import { generateDefaultPageId, initEmptyPage } from './utils'; import { useEffect } from 'react'; import pkg from '../../../package.json'; import { @@ -80,7 +80,7 @@ const EditorReactor = ({ setCurrentPage(page); } else { createPage(workspace!, pageId).then(page => { - initialPage(page); + initEmptyPage(page); setCurrentPage(page); }); } @@ -94,7 +94,7 @@ const EditorReactor = ({ } createPage(workspace!, generateDefaultPageId()).then(page => { - initialPage(page); + initEmptyPage(page); setCurrentPage(page); }); }, [workspace, routerPageId, setCurrentPage]); diff --git a/packages/app/src/providers/editor-provider/hooks/useEditorHandler.ts b/packages/app/src/providers/editor-provider/hooks/useEditorHandler.ts index 651ec6f136..c0b4c11272 100644 --- a/packages/app/src/providers/editor-provider/hooks/useEditorHandler.ts +++ b/packages/app/src/providers/editor-provider/hooks/useEditorHandler.ts @@ -1,5 +1,5 @@ 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 { useRouter } from 'next/router'; import { EditorHandlers, PageMeta } from '../interface'; @@ -17,9 +17,12 @@ export const useEditorHandler = ({ const router = useRouter(); return { - createPage: async ({ pageId = generateDefaultPageId(), title } = {}) => { + createPage: async ({ + pageId = generateDefaultPageId(), + title = '', + } = {}) => { const page = await createPage(workspace!, pageId); - initialPage(page, title); + initPage(workspace!, page, { title }); return page; }, getPageMeta(pageId) { @@ -29,6 +32,7 @@ export const useEditorHandler = ({ ) as PageMeta; }, openPage: (pageId, query = {}) => { + pageId = pageId.replace('space:', ''); return router.push({ pathname: '/', query: { diff --git a/packages/app/src/providers/editor-provider/utils.ts b/packages/app/src/providers/editor-provider/utils.ts index 7421643e5c..d7f5b7b193 100644 --- a/packages/app/src/providers/editor-provider/utils.ts +++ b/packages/app/src/providers/editor-provider/utils.ts @@ -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 groupId = page.addBlock({ flavour: 'affine:group' }, pageBlockId); page.addBlock({ flavour: 'affine:paragraph' }, groupId); + if (title) { + workspace!.meta.setPage(page.id.replace('space:', ''), { title }); + } return page; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 055f4da9f8..27c4e3c652 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,10 +22,10 @@ importers: packages/app: specifiers: - '@blocksuite/blocks': 0.3.0-alpha.9 - '@blocksuite/editor': 0.3.0-alpha.9 + '@blocksuite/blocks': 0.3.0-alpha.10 + '@blocksuite/editor': 0.3.0-alpha.10 '@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/react': ^11.10.4 '@emotion/server': ^11.10.0 @@ -55,10 +55,10 @@ importers: react-dom: 18.2.0 typescript: 4.8.3 dependencies: - '@blocksuite/blocks': 0.3.0-alpha.9 - '@blocksuite/editor': 0.3.0-alpha.9 + '@blocksuite/blocks': 0.3.0-alpha.10 + '@blocksuite/editor': 0.3.0-alpha.10 '@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/react': 11.10.4_w5j4k42lgipnm43s3brx6h3c34 '@emotion/server': 11.10.0_@emotion+css@11.10.0 @@ -176,10 +176,10 @@ packages: to-fast-properties: 2.0.0 dev: false - /@blocksuite/blocks/0.3.0-alpha.9: - resolution: {integrity: sha512-7Zw2lL5DZ+JB6dtmGKfuW19nG5gMvLPcTakK9oMszbhgETnwHUUN382Pz3urecuDA88yaLj8qbC1VdbAQWDW5w==} + /@blocksuite/blocks/0.3.0-alpha.10: + resolution: {integrity: sha512-tW6AMQTQIkBg4uob+6naAtnNWEgxtX/kBFpV/L1hGW3OHGF6JwpyM/AfzuuS9KooDJvADpb2xeQnNcifJTWGHA==} dependencies: - '@blocksuite/store': 0.3.0-alpha.9 + '@blocksuite/store': 0.3.0-alpha.10 '@tldraw/intersect': 1.8.0 '@tldraw/vec': 1.8.0 hotkeys-js: 3.10.0 @@ -193,11 +193,11 @@ packages: - utf-8-validate dev: false - /@blocksuite/editor/0.3.0-alpha.9: - resolution: {integrity: sha512-dnrk87akzwRRKxS18dec2rY2ZvfIpvNq9SIHEPCCk2UNLI2R66HUO5v1RhLi6/oglbWtizcqzQWCa/DjjY1ljA==} + /@blocksuite/editor/0.3.0-alpha.10: + resolution: {integrity: sha512-P5PcrYGRmnOeNTdqGDncWjUn5BwCm4j5JvJkjOw80VbvWNcVtWhr2ViBCsgD00m4ZIybxV6o00GOqDNNej2mEQ==} dependencies: - '@blocksuite/blocks': 0.3.0-alpha.9 - '@blocksuite/store': 0.3.0-alpha.9 + '@blocksuite/blocks': 0.3.0-alpha.10 + '@blocksuite/store': 0.3.0-alpha.10 lit: 2.4.0 marked: 4.1.1 turndown: 7.1.1 @@ -217,8 +217,8 @@ packages: react: 18.2.0 dev: false - /@blocksuite/store/0.3.0-alpha.9: - resolution: {integrity: sha512-5wdnE6JUL1/y/LufqcRg2lRL5mYvdXc+MOj98eNfFAv+JFbY4vuGZ8N9HFn6dQ/rQaQsgaoAZkWyogbbC8x4IA==} + /@blocksuite/store/0.3.0-alpha.10: + resolution: {integrity: sha512-KP88oFu5qAZA1mYbfLZ6D8S90bw8x3d19HhfoOqME0MOHyY6r462NF7wxQh9jlGDsCmyJMf3ZY+z/PxsJIufxQ==} dependencies: buffer: 6.0.3 flexsearch: 0.7.21