mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-18 10:36:22 +08:00
fix: new page logic (#1621)
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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<string> => {
|
||||
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]
|
||||
|
||||
Reference in New Issue
Block a user