mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 04:18:54 +00:00
feat: bump blocksuite (#5953)
This commit is contained in:
@@ -17,9 +17,9 @@
|
||||
"@affine/debug": "workspace:*",
|
||||
"@affine/env": "workspace:*",
|
||||
"@affine/templates": "workspace:*",
|
||||
"@blocksuite/blocks": "0.12.0-canary-202402220729-0868ac6",
|
||||
"@blocksuite/global": "0.12.0-canary-202402220729-0868ac6",
|
||||
"@blocksuite/store": "0.12.0-canary-202402220729-0868ac6",
|
||||
"@blocksuite/blocks": "0.12.0-canary-202402271448-6d3a709",
|
||||
"@blocksuite/global": "0.12.0-canary-202402271448-6d3a709",
|
||||
"@blocksuite/store": "0.12.0-canary-202402271448-6d3a709",
|
||||
"foxact": "^0.2.31",
|
||||
"jotai": "^2.6.5",
|
||||
"jotai-effect": "^0.5.0",
|
||||
@@ -33,8 +33,8 @@
|
||||
"devDependencies": {
|
||||
"@affine-test/fixtures": "workspace:*",
|
||||
"@affine/templates": "workspace:*",
|
||||
"@blocksuite/lit": "0.12.0-canary-202402220729-0868ac6",
|
||||
"@blocksuite/presets": "0.12.0-canary-202402220729-0868ac6",
|
||||
"@blocksuite/lit": "0.12.0-canary-202402271448-6d3a709",
|
||||
"@blocksuite/presets": "0.12.0-canary-202402271448-6d3a709",
|
||||
"@testing-library/react": "^14.2.1",
|
||||
"async-call-rpc": "^6.4.0",
|
||||
"react": "^18.2.0",
|
||||
|
||||
@@ -30,7 +30,7 @@ export async function migratePages(
|
||||
spaces.forEach((space: YDoc) => {
|
||||
try {
|
||||
// Catch page upgrade error to avoid blocking the whole workspace migration.
|
||||
schema.upgradePage(0, oldVersions, space);
|
||||
schema.upgradeDoc(0, oldVersions, space);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ export function checkWorkspaceCompatibility(
|
||||
}
|
||||
|
||||
// exit if no pages
|
||||
if (!workspace.meta.pages?.length) {
|
||||
if (!workspace.meta.docs?.length) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ export function checkWorkspaceCompatibility(
|
||||
|
||||
// TODO: Catch compatibility error from blocksuite to show upgrade page.
|
||||
// Temporarily follow the check logic of blocksuite.
|
||||
if ((workspace.meta.pages?.length ?? 0) <= 1) {
|
||||
if ((workspace.meta.docs?.length ?? 0) <= 1) {
|
||||
try {
|
||||
workspace.meta.validateVersion(workspace);
|
||||
} catch (e) {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import type { WorkspaceFlavour } from '@affine/env/workspace';
|
||||
import type {
|
||||
Doc,
|
||||
DocSnapshot,
|
||||
JobMiddleware,
|
||||
Page,
|
||||
PageSnapshot,
|
||||
WorkspaceInfoSnapshot,
|
||||
} from '@blocksuite/store';
|
||||
import { Job } from '@blocksuite/store';
|
||||
@@ -13,7 +13,7 @@ import { PageRecordList } from '../page';
|
||||
import type { WorkspaceManager } from '../workspace';
|
||||
import { replaceIdMiddleware } from './middleware';
|
||||
|
||||
export function initEmptyPage(page: Page, title?: string) {
|
||||
export function initEmptyPage(page: Doc, title?: string) {
|
||||
page.load(() => {
|
||||
const pageBlockId = page.addBlock('affine:page', {
|
||||
title: new page.Text(title ?? ''),
|
||||
@@ -44,7 +44,7 @@ export async function buildShowcaseWorkspace(
|
||||
const migrationMiddleware: JobMiddleware = ({ slots, workspace }) => {
|
||||
slots.afterImport.on(payload => {
|
||||
if (payload.type === 'page') {
|
||||
workspace.schema.upgradePage(
|
||||
workspace.schema.upgradeDoc(
|
||||
info?.pageVersion ?? 0,
|
||||
{},
|
||||
payload.page.spaceDoc
|
||||
@@ -65,15 +65,15 @@ export async function buildShowcaseWorkspace(
|
||||
// @ts-expect-error - rethinking API
|
||||
job._assetsManager.writeToBlob = async () => {};
|
||||
|
||||
const pageSnapshots: PageSnapshot[] = Object.entries(onboarding)
|
||||
const docSnapshots: DocSnapshot[] = Object.entries(onboarding)
|
||||
.filter(([key]) => {
|
||||
return key.endsWith('snapshot.json');
|
||||
})
|
||||
.map(([_, value]) => value as unknown as PageSnapshot);
|
||||
.map(([_, value]) => value as unknown as DocSnapshot);
|
||||
|
||||
await Promise.all(
|
||||
pageSnapshots.map(snapshot => {
|
||||
return job.snapshotToPage(snapshot);
|
||||
docSnapshots.map(snapshot => {
|
||||
return job.snapshotToDoc(snapshot);
|
||||
})
|
||||
);
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import type { Page as BlockSuitePage } from '@blocksuite/store';
|
||||
import type { Doc as BlockSuiteDoc } from '@blocksuite/store';
|
||||
|
||||
import { createIdentifier, type ServiceCollection } from '../di';
|
||||
import type { PageRecord } from './record';
|
||||
import { PageScope } from './service-scope';
|
||||
|
||||
export const BlockSuitePageContext = createIdentifier<BlockSuitePage>(
|
||||
export const BlockSuitePageContext = createIdentifier<BlockSuiteDoc>(
|
||||
'BlockSuitePageContext'
|
||||
);
|
||||
|
||||
@@ -13,7 +13,7 @@ export const PageRecordContext =
|
||||
|
||||
export function configurePageContext(
|
||||
services: ServiceCollection,
|
||||
blockSuitePage: BlockSuitePage,
|
||||
blockSuitePage: BlockSuiteDoc,
|
||||
pageRecord: PageRecord
|
||||
) {
|
||||
services
|
||||
|
||||
@@ -9,7 +9,7 @@ import { CleanupService } from '../lifecycle';
|
||||
import { Workspace, WorkspaceLocalState, WorkspaceScope } from '../workspace';
|
||||
import { BlockSuitePageContext, PageRecordContext } from './context';
|
||||
import { PageManager } from './manager';
|
||||
import { Page } from './page';
|
||||
import { Doc } from './page';
|
||||
import { PageRecordList } from './record-list';
|
||||
import { PageScope } from './service-scope';
|
||||
|
||||
@@ -22,5 +22,5 @@ export function configurePageServices(services: ServiceCollection) {
|
||||
services
|
||||
.scope(PageScope)
|
||||
.add(CleanupService)
|
||||
.add(Page, [PageRecordContext, BlockSuitePageContext, ServiceProvider]);
|
||||
.add(Doc, [PageRecordContext, BlockSuitePageContext, ServiceProvider]);
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ import { ObjectPool } from '../utils/object-pool';
|
||||
import type { Workspace } from '../workspace';
|
||||
import type { PageRecordList } from '.';
|
||||
import { configurePageContext } from './context';
|
||||
import { Page } from './page';
|
||||
import { Doc } from './page';
|
||||
import { PageScope } from './service-scope';
|
||||
|
||||
export class PageManager {
|
||||
pool = new ObjectPool<string, Page>({});
|
||||
pool = new ObjectPool<string, Doc>({});
|
||||
|
||||
constructor(
|
||||
private readonly workspace: Workspace,
|
||||
@@ -20,7 +20,7 @@ export class PageManager {
|
||||
if (!pageRecord) {
|
||||
throw new Error('Page record not found');
|
||||
}
|
||||
const blockSuitePage = this.workspace.blockSuiteWorkspace.getPage(pageId);
|
||||
const blockSuitePage = this.workspace.blockSuiteWorkspace.getDoc(pageId);
|
||||
if (!blockSuitePage) {
|
||||
throw new Error('Page not found');
|
||||
}
|
||||
@@ -41,7 +41,7 @@ export class PageManager {
|
||||
this.serviceProvider
|
||||
);
|
||||
|
||||
const page = provider.get(Page);
|
||||
const page = provider.get(Doc);
|
||||
|
||||
const { obj, release } = this.pool.put(pageId, page);
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import type { Page as BlockSuitePage } from '@blocksuite/store';
|
||||
import type { Doc as BlockSuiteDoc } from '@blocksuite/store';
|
||||
import type { ServiceProvider } from '@toeverything/infra/di';
|
||||
|
||||
import type { PageMode, PageRecord } from './record';
|
||||
|
||||
export class Page {
|
||||
export class Doc {
|
||||
constructor(
|
||||
public readonly record: PageRecord,
|
||||
public readonly blockSuitePage: BlockSuitePage,
|
||||
public readonly blockSuiteDoc: BlockSuiteDoc,
|
||||
public readonly services: ServiceProvider
|
||||
) {}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ export class PageRecordList {
|
||||
new Observable(subscriber => {
|
||||
const emit = () => {
|
||||
subscriber.next(
|
||||
this.workspace.blockSuiteWorkspace.meta.pageMetas.map(
|
||||
this.workspace.blockSuiteWorkspace.meta.docMetas.map(
|
||||
v => new PageRecord(v.id, this.workspace, this.localState)
|
||||
)
|
||||
);
|
||||
@@ -27,9 +27,7 @@ export class PageRecordList {
|
||||
emit();
|
||||
|
||||
const dispose =
|
||||
this.workspace.blockSuiteWorkspace.meta.pageMetasUpdated.on(
|
||||
emit
|
||||
).dispose;
|
||||
this.workspace.blockSuiteWorkspace.meta.docMetaUpdated.on(emit).dispose;
|
||||
return () => {
|
||||
dispose();
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { PageMeta } from '@blocksuite/store';
|
||||
import type { DocMeta } from '@blocksuite/store';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
import { LiveData } from '../livedata';
|
||||
@@ -13,10 +13,10 @@ export class PageRecord {
|
||||
private readonly localState: WorkspaceLocalState
|
||||
) {}
|
||||
|
||||
meta = LiveData.from<PageMeta>(
|
||||
meta = LiveData.from<DocMeta>(
|
||||
new Observable(subscriber => {
|
||||
const emit = () => {
|
||||
const meta = this.workspace.blockSuiteWorkspace.meta.pageMetas.find(
|
||||
const meta = this.workspace.blockSuiteWorkspace.meta.docMetas.find(
|
||||
page => page.id === this.id
|
||||
);
|
||||
if (meta === undefined) {
|
||||
@@ -28,9 +28,7 @@ export class PageRecord {
|
||||
emit();
|
||||
|
||||
const dispose =
|
||||
this.workspace.blockSuiteWorkspace.meta.pageMetasUpdated.on(
|
||||
emit
|
||||
).dispose;
|
||||
this.workspace.blockSuiteWorkspace.meta.docMetaUpdated.on(emit).dispose;
|
||||
return () => {
|
||||
dispose();
|
||||
};
|
||||
@@ -43,8 +41,8 @@ export class PageRecord {
|
||||
}
|
||||
);
|
||||
|
||||
setMeta(meta: Partial<PageMeta>): void {
|
||||
this.workspace.blockSuiteWorkspace.setPageMeta(this.id, meta);
|
||||
setMeta(meta: Partial<DocMeta>): void {
|
||||
this.workspace.blockSuiteWorkspace.setDocMeta(this.id, meta);
|
||||
}
|
||||
|
||||
mode: LiveData<PageMode> = LiveData.from(
|
||||
|
||||
@@ -22,7 +22,7 @@ describe('Workspace System', () => {
|
||||
|
||||
expect(workspaceListService.workspaceList.value.length).toBe(1);
|
||||
|
||||
const page = workspace.blockSuiteWorkspace.createPage({
|
||||
const page = workspace.blockSuiteWorkspace.createDoc({
|
||||
id: 'page0',
|
||||
});
|
||||
page.load();
|
||||
@@ -30,7 +30,7 @@ describe('Workspace System', () => {
|
||||
title: new page.Text('test-page'),
|
||||
});
|
||||
|
||||
expect(workspace.blockSuiteWorkspace.pages.size).toBe(1);
|
||||
expect(workspace.blockSuiteWorkspace.docs.size).toBe(1);
|
||||
expect(
|
||||
(page!.getBlockByFlavour('affine:page')[0] as any).title.toString()
|
||||
).toBe('test-page');
|
||||
|
||||
@@ -42,7 +42,7 @@ describe('SyncEngine', () => {
|
||||
);
|
||||
syncEngine.start();
|
||||
|
||||
const page = workspace.createPage({
|
||||
const page = workspace.createDoc({
|
||||
id: 'page0',
|
||||
});
|
||||
page.load();
|
||||
|
||||
@@ -35,7 +35,7 @@ describe('SyncPeer', () => {
|
||||
);
|
||||
await syncPeer.waitForLoaded();
|
||||
|
||||
const page = workspace.createPage({
|
||||
const page = workspace.createDoc({
|
||||
id: 'page0',
|
||||
});
|
||||
page.load();
|
||||
@@ -85,7 +85,7 @@ describe('SyncPeer', () => {
|
||||
await syncPeer.waitForSynced();
|
||||
expect(syncPeer.status.step).toBe(SyncPeerStep.Synced);
|
||||
|
||||
const page = workspace.createPage({
|
||||
const page = workspace.createDoc({
|
||||
id: 'page0',
|
||||
});
|
||||
expect(syncPeer.status.step).toBe(SyncPeerStep.LoadingSubDoc);
|
||||
|
||||
Reference in New Issue
Block a user