feat(core): unify all new created page IDs to nanoid (#4884)

This commit is contained in:
liuyi
2023-11-09 17:22:02 +08:00
committed by GitHub
parent e3e0553c56
commit f9654bb1f8
4 changed files with 10 additions and 27 deletions
@@ -19,8 +19,8 @@ export const usePageHelper = (blockSuiteWorkspace: BlockSuiteWorkspace) => {
);
const setPageMode = useSetAtom(setPageModeAtom);
const createPageAndOpen = useCallback(
(id?: string, mode?: 'page' | 'edgeless') => {
const page = createPage(id);
(mode?: 'page' | 'edgeless') => {
const page = createPage();
initEmptyPage(page).catch(error => {
toast(`Failed to initialize Page: ${error.message}`);
});
@@ -30,12 +30,9 @@ export const usePageHelper = (blockSuiteWorkspace: BlockSuiteWorkspace) => {
},
[blockSuiteWorkspace.id, createPage, openPage, setPageMode]
);
const createEdgelessAndOpen = useCallback(
(id?: string) => {
return createPageAndOpen(id, 'edgeless');
},
[createPageAndOpen]
);
const createEdgelessAndOpen = useCallback(() => {
return createPageAndOpen('edgeless');
}, [createPageAndOpen]);
const importFileAndOpen = useCallback(async () => {
const { showImportModal } = await import('@blocksuite/blocks');
const onSuccess = (pageIds: string[], isWorkspaceFile: boolean) => {
@@ -33,7 +33,6 @@ import { useBlockSuitePageMeta } from '@toeverything/hooks/use-block-suite-page-
import { loadPage } from '@toeverything/hooks/use-block-suite-workspace-page';
import { currentWorkspaceIdAtom } from '@toeverything/infra/atom';
import { useAtom, useAtomValue, useSetAtom } from 'jotai';
import { nanoid } from 'nanoid';
import type { PropsWithChildren, ReactNode } from 'react';
import { lazy, Suspense, useCallback, useEffect, useState } from 'react';
import { useLocation, useParams } from 'react-router-dom';
@@ -198,12 +197,8 @@ export const WorkspaceLayoutInner = ({
}, [currentWorkspace.blockSuiteWorkspace.doc]);
const handleCreatePage = useCallback(() => {
const id = nanoid();
pageHelper.createPage(id);
const page = currentWorkspace.blockSuiteWorkspace.getPage(id);
assertExists(page);
return page;
}, [currentWorkspace.blockSuiteWorkspace, pageHelper]);
return pageHelper.createPage();
}, [pageHelper]);
const [, setOpenQuickSearchModalAtom] = useAtom(openQuickSearchModalAtom);
const handleOpenQuickSearchModal = useCallback(() => {
@@ -1,14 +1,10 @@
import type { Page, Workspace } from '@blocksuite/store';
import { useMemo } from 'react';
import { v4 as uuid } from 'uuid';
export function useBlockSuiteWorkspaceHelper(blockSuiteWorkspace: Workspace) {
return useMemo(
() => ({
createPage: (pageId?: string): Page => {
if (!pageId) {
pageId = uuid();
}
return blockSuiteWorkspace.createPage({ id: pageId });
},
}),
@@ -4,13 +4,9 @@ import { WorkspaceFlavour } from '@affine/env/workspace';
import { createAffinePublicProviders } from '@affine/workspace/providers';
import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
import type { DocProviderCreator, StoreOptions } from '@blocksuite/store';
import {
createIndexeddbStorage,
Generator,
Schema,
Workspace,
} from '@blocksuite/store';
import { createIndexeddbStorage, Schema, Workspace } from '@blocksuite/store';
import { INTERNAL_BLOCKSUITE_HASH_MAP } from '@toeverything/infra/__internal__/workspace';
import { nanoid } from 'nanoid';
import type { Doc } from 'yjs';
import type { Transaction } from 'yjs';
@@ -94,7 +90,6 @@ export function getOrCreateWorkspace(
if (INTERNAL_BLOCKSUITE_HASH_MAP.has(id)) {
return INTERNAL_BLOCKSUITE_HASH_MAP.get(id) as Workspace;
}
const idGenerator = Generator.NanoID;
const blobStorages: StoreOptions['blobStorages'] = [];
if (flavour === WorkspaceFlavour.AFFINE_CLOUD) {
@@ -135,7 +130,7 @@ export function getOrCreateWorkspace(
isSSR: !isBrowser,
providerCreators: typeof window === 'undefined' ? [] : providerCreators,
blobStorages: blobStorages,
idGenerator,
idGenerator: () => nanoid(),
schema: globalBlockSuiteSchema,
});
createMonitor(workspace.doc);