feat(infra): framework

This commit is contained in:
EYHN
2024-04-17 14:12:29 +08:00
parent ab17a05df3
commit 06fda3b62c
467 changed files with 9996 additions and 8697 deletions

View File

@@ -3,38 +3,32 @@ import { DEFAULT_WORKSPACE_NAME } from '@affine/env/constant';
import { WorkspaceFlavour } from '@affine/env/workspace';
import onboardingUrl from '@affine/templates/onboarding.zip';
import { ZipTransformer } from '@blocksuite/blocks';
import {
initEmptyPage,
PageRecordList,
type WorkspaceManager,
} from '@toeverything/infra';
import type { WorkspacesService } from '@toeverything/infra';
import { DocsService, initEmptyPage } from '@toeverything/infra';
export async function buildShowcaseWorkspace(
workspaceManager: WorkspaceManager,
workspacesService: WorkspacesService,
flavour: WorkspaceFlavour,
workspaceName: string
) {
const meta = await workspaceManager.createWorkspace(
flavour,
async docCollection => {
docCollection.meta.setName(workspaceName);
const blob = await (await fetch(onboardingUrl)).blob();
const meta = await workspacesService.create(flavour, async docCollection => {
docCollection.meta.setName(workspaceName);
const blob = await (await fetch(onboardingUrl)).blob();
await ZipTransformer.importDocs(docCollection, blob);
}
);
await ZipTransformer.importDocs(docCollection, blob);
});
const { workspace, release } = workspaceManager.open(meta);
const { workspace, dispose } = workspacesService.open({ metadata: meta });
await workspace.engine.waitForRootDocReady();
const pageRecordList = workspace.services.get(PageRecordList);
const docsService = workspace.scope.get(DocsService);
// todo: find better way to do the following
// perhaps put them into middleware?
{
// the "Write, Draw, Plan all at Once." page should be set to edgeless mode
const edgelessPage1 = pageRecordList.records$.value.find(
const edgelessPage1 = docsService.list.docs$.value.find(
p => p.title$.value === 'Write, Draw, Plan all at Once.'
);
@@ -43,7 +37,7 @@ export async function buildShowcaseWorkspace(
}
// should jump to "Write, Draw, Plan all at Once." by default
const defaultPage = pageRecordList.records$.value.find(p =>
const defaultPage = docsService.list.docs$.value.find(p =>
p.title$.value.startsWith('Write, Draw, Plan all at Once.')
);
@@ -53,27 +47,27 @@ export async function buildShowcaseWorkspace(
});
}
}
release();
dispose();
return meta;
}
const logger = new DebugLogger('createFirstAppData');
export async function createFirstAppData(workspaceManager: WorkspaceManager) {
export async function createFirstAppData(workspacesService: WorkspacesService) {
if (localStorage.getItem('is-first-open') !== null) {
return;
}
localStorage.setItem('is-first-open', 'false');
if (runtimeConfig.enablePreloading) {
const workspaceMetadata = await buildShowcaseWorkspace(
workspaceManager,
workspacesService,
WorkspaceFlavour.LOCAL,
DEFAULT_WORKSPACE_NAME
);
logger.info('create first workspace', workspaceMetadata);
return workspaceMetadata;
} else {
const workspaceMetadata = await workspaceManager.createWorkspace(
const workspaceMetadata = await workspacesService.create(
WorkspaceFlavour.LOCAL,
async workspace => {
workspace.meta.setName(DEFAULT_WORKSPACE_NAME);