diff --git a/apps/web/src/components/pure/quick-search-modal/Footer.tsx b/apps/web/src/components/pure/quick-search-modal/Footer.tsx index a9f94c6414..67f4fe3dc8 100644 --- a/apps/web/src/components/pure/quick-search-modal/Footer.tsx +++ b/apps/web/src/components/pure/quick-search-modal/Footer.tsx @@ -38,13 +38,13 @@ export const Footer: React.FC = ({ onSelect={async () => { onClose(); const id = nanoid(); - const pageId = await createPage(id, query); - assertEquals(pageId, id); - await jumpToPage(blockSuiteWorkspace.id, pageId); + const page = await createPage(id, query); + assertEquals(page.id, id); + await jumpToPage(blockSuiteWorkspace.id, page.id); if (!query) { return; } - const newPage = blockSuiteWorkspace.getPage(pageId); + const newPage = blockSuiteWorkspace.getPage(page.id); if (newPage) { const block = newPage.getBlockByFlavour( 'affine:page' diff --git a/apps/web/src/components/pure/workspace-slider-bar/index.tsx b/apps/web/src/components/pure/workspace-slider-bar/index.tsx index 1b8efe0512..d1cd3a72f0 100644 --- a/apps/web/src/components/pure/workspace-slider-bar/index.tsx +++ b/apps/web/src/components/pure/workspace-slider-bar/index.tsx @@ -10,7 +10,7 @@ import { SearchIcon, SettingsIcon, } from '@blocksuite/icons'; -import type { PageMeta } from '@blocksuite/store'; +import type { Page, PageMeta } from '@blocksuite/store'; import Link from 'next/link'; import { useRouter } from 'next/router'; import type React from 'react'; @@ -96,7 +96,7 @@ export type WorkSpaceSliderBarProps = { currentWorkspace: RemWorkspace | null; currentPageId: string | null; openPage: (pageId: string) => void; - createPage: () => Promise; + createPage: () => Page; currentPath: string; paths: { all: (workspaceId: string) => string; @@ -123,10 +123,8 @@ export const WorkSpaceSliderBar: React.FC = ({ const [sidebarOpen] = useSidebarStatus(); const pageMeta = usePageMeta(currentWorkspace?.blockSuiteWorkspace ?? null); const onClickNewPage = useCallback(async () => { - const pageId = await createPage(); - if (pageId) { - openPage(pageId); - } + const page = await createPage(); + openPage(page.id); }, [createPage, openPage]); return ( <> diff --git a/apps/web/src/hooks/__tests__/use-blocksuite-workspace-helper.spec.ts b/apps/web/src/hooks/__tests__/use-blocksuite-workspace-helper.spec.ts index 1fff94bdd9..2ad145c5b1 100644 --- a/apps/web/src/hooks/__tests__/use-blocksuite-workspace-helper.spec.ts +++ b/apps/web/src/hooks/__tests__/use-blocksuite-workspace-helper.spec.ts @@ -6,7 +6,7 @@ import 'fake-indexeddb/auto'; import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models'; import type { Page } from '@blocksuite/store'; import { renderHook } from '@testing-library/react'; -import { beforeEach, describe, expect, test, vi } from 'vitest'; +import { beforeEach, describe, expect, test } from 'vitest'; import { BlockSuiteWorkspace } from '../../shared'; import { useBlockSuiteWorkspaceHelper } from '../use-blocksuite-workspace-helper'; @@ -40,10 +40,8 @@ describe('useBlockSuiteWorkspaceHelper', () => { const pageMetaHook = renderHook(() => usePageMeta(blockSuiteWorkspace)); expect(pageMetaHook.result.current.length).toBe(3); expect(blockSuiteWorkspace.meta.pageMetas.length).toBe(3); - const callback = vi.fn(id => { - expect(id).toBe('page4'); - }); - helperHook.result.current.createPage('page4').then(callback); + const page = helperHook.result.current.createPage('page4'); + expect(page.id).toBe('page4'); expect(blockSuiteWorkspace.meta.pageMetas.length).toBe(4); pageMetaHook.rerender(); expect(pageMetaHook.result.current.length).toBe(4); diff --git a/apps/web/src/hooks/use-blocksuite-workspace-helper.ts b/apps/web/src/hooks/use-blocksuite-workspace-helper.ts index ff671b18ac..c748c34aec 100644 --- a/apps/web/src/hooks/use-blocksuite-workspace-helper.ts +++ b/apps/web/src/hooks/use-blocksuite-workspace-helper.ts @@ -1,3 +1,4 @@ +import type { Page } from '@blocksuite/store'; import { assertExists } from '@blocksuite/store'; import { useMemo } from 'react'; @@ -8,20 +9,9 @@ export function useBlockSuiteWorkspaceHelper( ) { return useMemo( () => ({ - createPage: (pageId: string, title?: string): Promise => { - return new Promise(resolve => { - assertExists(blockSuiteWorkspace); - const dispose = blockSuiteWorkspace.slots.pageAdded.on(id => { - if (id === pageId) { - dispose.dispose(); - // Fixme: https://github.com/toeverything/blocksuite/issues/1350 - setTimeout(() => { - resolve(pageId); - }, 0); - } - }); - blockSuiteWorkspace.createPage(pageId); - }); + createPage: (pageId: string, title?: string): Page => { + assertExists(blockSuiteWorkspace); + return blockSuiteWorkspace.createPage(pageId); }, }), [blockSuiteWorkspace] diff --git a/apps/web/src/layouts/index.tsx b/apps/web/src/layouts/index.tsx index 48d4ddd155..bd684ee5f2 100644 --- a/apps/web/src/layouts/index.tsx +++ b/apps/web/src/layouts/index.tsx @@ -148,7 +148,7 @@ export const WorkspaceLayoutInner: React.FC = ({ }, [currentWorkspace, isPublicWorkspace, jumpToPage, jumpToPublicWorkspacePage] ); - const handleCreatePage = useCallback(async () => { + const handleCreatePage = useCallback(() => { return helper.createPage(nanoid()); }, [helper]); const handleOpenWorkspaceListModal = useCallback(() => { diff --git a/tests/quick-search.spec.ts b/tests/quick-search.spec.ts index 883f86f780..3b4fee50ae 100644 --- a/tests/quick-search.spec.ts +++ b/tests/quick-search.spec.ts @@ -99,7 +99,7 @@ test.describe('Search and select', () => { await openQuickSearchByShortcut(page); await page.keyboard.insertText('test123456'); await page.waitForTimeout(50); - await assertResultList(page, ["New 'test123456' page"]); + await assertResultList(page, ['test123456']); await page.keyboard.press('Enter'); await page.waitForTimeout(300); await assertTitle(page, 'test123456');