diff --git a/apps/core/src/adapters/local/index.tsx b/apps/core/src/adapters/local/index.tsx index ea7dbe0d7f..219a667501 100644 --- a/apps/core/src/adapters/local/index.tsx +++ b/apps/core/src/adapters/local/index.tsx @@ -20,8 +20,10 @@ import { getOrCreateWorkspace } from '@affine/workspace/manager'; import { createIndexedDBDownloadProvider } from '@affine/workspace/providers'; import { nanoid } from '@blocksuite/store'; import { useStaticBlockSuiteWorkspace } from '@toeverything/infra/__internal__/react'; +import { rootStore } from '@toeverything/infra/atom'; import { buildShowcaseWorkspace } from '@toeverything/infra/blocksuite'; +import { setPageModeAtom } from '../../atoms'; import { BlockSuitePageList, NewWorkspaceSettingDetail, @@ -43,7 +45,12 @@ export const LocalAdapter: WorkspaceAdapter = { ); blockSuiteWorkspace.meta.setName(DEFAULT_WORKSPACE_NAME); if (runtimeConfig.enablePreloading) { - buildShowcaseWorkspace(blockSuiteWorkspace).catch(err => { + buildShowcaseWorkspace(blockSuiteWorkspace, { + store: rootStore, + atoms: { + pageMode: setPageModeAtom, + }, + }).catch(err => { logger.error('init page with preloading failed', err); }); } else { diff --git a/apps/core/src/hooks/use-workspaces.ts b/apps/core/src/hooks/use-workspaces.ts index 2b476673f8..9a013706a1 100644 --- a/apps/core/src/hooks/use-workspaces.ts +++ b/apps/core/src/hooks/use-workspaces.ts @@ -5,12 +5,14 @@ import { saveWorkspaceToLocalStorage } from '@affine/workspace/local/crud'; import { getOrCreateWorkspace } from '@affine/workspace/manager'; import { nanoid } from '@blocksuite/store'; import { getWorkspace } from '@toeverything/infra/__internal__/workspace'; +import { rootStore } from '@toeverything/infra/atom'; import { buildShowcaseWorkspace } from '@toeverything/infra/blocksuite'; import { useAtomValue, useSetAtom } from 'jotai'; import { useCallback } from 'react'; import { LocalAdapter } from '../adapters/local'; import { WorkspaceAdapters } from '../adapters/workspace'; +import { setPageModeAtom } from '../atoms'; const logger = new DebugLogger('use-workspaces'); @@ -52,7 +54,12 @@ export function useAppHelper() { id, WorkspaceFlavour.LOCAL ); - await buildShowcaseWorkspace(blockSuiteWorkspace); + await buildShowcaseWorkspace(blockSuiteWorkspace, { + store: rootStore, + atoms: { + pageMode: setPageModeAtom, + }, + }); } set(workspaces => [ ...workspaces, diff --git a/packages/infra/src/blocksuite/index.ts b/packages/infra/src/blocksuite/index.ts index 509d11a6e4..0c482fdf8d 100644 --- a/packages/infra/src/blocksuite/index.ts +++ b/packages/infra/src/blocksuite/index.ts @@ -1,6 +1,19 @@ import type { PageMeta, Workspace } from '@blocksuite/store'; +import type { createStore, WritableAtom } from 'jotai/vanilla'; -export async function buildShowcaseWorkspace(workspace: Workspace) { +export async function buildShowcaseWorkspace( + workspace: Workspace, + options: { + atoms: { + pageMode: WritableAtom< + undefined, + [pageId: string, mode: 'page' | 'edgeless'], + void + >; + }; + store: ReturnType; + } +) { const showcaseWorkspaceVersions = { 'affine:code': 1, 'affine:paragraph': 1, @@ -66,6 +79,11 @@ export async function buildShowcaseWorkspace(workspace: Workspace) { }, }; workspace.meta.setProperties(prototypes); + const { store, atoms } = options; + ['F1SX6cgNxy', 'nQd2Bdvoqz'].forEach(pageId => { + store.set(atoms.pageMode, pageId, 'edgeless'); + }); + const pageMetas = { 'gc5FeppNDv-hello-world': { createDate: 1691548231530,