fix: create page title not sync to meta

This commit is contained in:
QiShaoXuan
2022-12-16 17:33:30 +08:00
parent 2816f44c55
commit 28d140dc98
7 changed files with 47 additions and 33 deletions
@@ -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]);
@@ -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: {
@@ -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;
};