chore: bump blocksuite (#7075)

## Features
- toeverything/blocksuite#6937 @Flrande

## Bugfix
- toeverything/blocksuite#7137 @fundon
- toeverything/blocksuite#7126 @golok727
- toeverything/blocksuite#7128 @CatsJuice
- toeverything/blocksuite#7130 @fundon

## Refactor

## Misc
- toeverything/blocksuite#7131 @fundon

## Additional changes

Adjust the awareness provider so that it only obtains awareness instances when connect, and fixes the dependencies between workspace components.
This commit is contained in:
EYHN
2024-05-27 05:11:12 +00:00
parent 5552c02e4a
commit a440e85ffe
24 changed files with 192 additions and 194 deletions

View File

@@ -13,9 +13,9 @@
"@affine/debug": "workspace:*",
"@affine/env": "workspace:*",
"@affine/templates": "workspace:*",
"@blocksuite/blocks": "0.15.0-canary-202405240632-44ff286",
"@blocksuite/global": "0.15.0-canary-202405240632-44ff286",
"@blocksuite/store": "0.15.0-canary-202405240632-44ff286",
"@blocksuite/blocks": "0.15.0-canary-202405261009-6c8ef5b",
"@blocksuite/global": "0.15.0-canary-202405261009-6c8ef5b",
"@blocksuite/store": "0.15.0-canary-202405261009-6c8ef5b",
"@datastructures-js/binary-search-tree": "^5.3.2",
"foxact": "^0.2.33",
"jotai": "^2.8.0",
@@ -30,8 +30,8 @@
"devDependencies": {
"@affine-test/fixtures": "workspace:*",
"@affine/templates": "workspace:*",
"@blocksuite/block-std": "0.15.0-canary-202405240632-44ff286",
"@blocksuite/presets": "0.15.0-canary-202405240632-44ff286",
"@blocksuite/block-std": "0.15.0-canary-202405261009-6c8ef5b",
"@blocksuite/presets": "0.15.0-canary-202405261009-6c8ef5b",
"@testing-library/react": "^15.0.0",
"async-call-rpc": "^6.4.0",
"react": "^18.2.0",

View File

@@ -34,7 +34,7 @@ export class WorkspaceEngine extends Entity<{
start() {
this.doc.start();
this.awareness.connect();
this.awareness.connect(this.workspaceService.workspace.awareness);
this.blob.start();
}

View File

@@ -78,11 +78,11 @@ export class WorkspaceUpgrade extends Entity {
this.workspaceService.workspace.docCollection.schema
);
const blobList =
await this.workspaceService.workspace.docCollection.blob.list();
await this.workspaceService.workspace.docCollection.blobSync.list();
for (const blobKey of blobList) {
const blob =
await this.workspaceService.workspace.docCollection.blob.get(
await this.workspaceService.workspace.docCollection.blobSync.get(
blobKey
);
if (blob) {

View File

@@ -29,24 +29,9 @@ export class Workspace extends Entity {
if (!this._docCollection) {
this._docCollection = new DocCollection({
id: this.openOptions.metadata.id,
blobStorages: [
() => ({
crud: {
get: key => {
return this.engine.blob.get(key);
},
set: (key, value) => {
return this.engine.blob.set(key, value);
},
list: () => {
return this.engine.blob.list();
},
delete: key => {
return this.engine.blob.delete(key);
},
},
}),
],
blobSources: {
main: this.engine.blob,
},
idGenerator: () => nanoid(),
schema: globalBlockSuiteSchema,
});

View File

@@ -69,7 +69,7 @@ export function configureWorkspaceModule(framework: Framework) {
.scope(WorkspaceScope)
.service(WorkspaceService)
.entity(Workspace, [WorkspaceScope])
.service(WorkspaceEngineService, [WorkspaceService])
.service(WorkspaceEngineService, [WorkspaceScope])
.entity(WorkspaceEngine, [WorkspaceService])
.service(WorkspaceUpgradeService)
.entity(WorkspaceUpgrade, [

View File

@@ -10,7 +10,6 @@ import type {
DocStorage,
} from '../../../sync';
import type { WorkspaceProfileInfo } from '../entities/profile';
import type { Workspace } from '../entities/workspace';
import type { WorkspaceMetadata } from '../metadata';
export interface WorkspaceEngineProvider {
@@ -54,7 +53,7 @@ export interface WorkspaceFlavourProvider {
getWorkspaceBlob(id: string, blob: string): Promise<Blob | null>;
getEngineProvider(workspace: Workspace): WorkspaceEngineProvider;
getEngineProvider(workspaceId: string): WorkspaceEngineProvider;
}
export const WorkspaceFlavourProvider =

View File

@@ -1,6 +1,6 @@
import { Service } from '../../../framework';
import { WorkspaceEngine } from '../entities/engine';
import type { WorkspaceService } from './workspace';
import type { WorkspaceScope } from '../scopes/workspace';
export class WorkspaceEngineService extends Service {
private _engine: WorkspaceEngine | null = null;
@@ -8,15 +8,15 @@ export class WorkspaceEngineService extends Service {
if (!this._engine) {
this._engine = this.framework.createEntity(WorkspaceEngine, {
engineProvider:
this.workspaceService.workspace.flavourProvider.getEngineProvider(
this.workspaceService.workspace
this.workspaceScope.props.flavourProvider.getEngineProvider(
this.workspaceScope.props.openOptions.metadata.id
),
});
}
return this._engine;
}
constructor(private readonly workspaceService: WorkspaceService) {
constructor(private readonly workspaceScope: WorkspaceScope) {
super();
}
}

View File

@@ -10,7 +10,6 @@ import { type BlobStorage, MemoryDocStorage } from '../../../sync';
import { MemoryBlobStorage } from '../../../sync/blob/blob';
import type { GlobalState } from '../../storage';
import type { WorkspaceProfileInfo } from '../entities/profile';
import type { Workspace } from '../entities/workspace';
import { globalBlockSuiteSchema } from '../global-schema';
import type { WorkspaceMetadata } from '../metadata';
import type {
@@ -54,13 +53,9 @@ export class TestingWorkspaceLocalProvider
id: id,
idGenerator: () => nanoid(),
schema: globalBlockSuiteSchema,
blobStorages: [
() => {
return {
crud: blobStorage,
};
},
],
blobSources: {
main: blobStorage,
},
});
// apply initial state
@@ -110,7 +105,7 @@ export class TestingWorkspaceLocalProvider
blob
);
}
getEngineProvider(workspace: Workspace): WorkspaceEngineProvider {
getEngineProvider(workspaceId: string): WorkspaceEngineProvider {
return {
getDocStorage: () => {
return this.docStorage;
@@ -123,7 +118,7 @@ export class TestingWorkspaceLocalProvider
},
getLocalBlobStorage: () => {
return new MemoryBlobStorage(
wrapMemento(this.store, workspace.id + '/blobs/')
wrapMemento(this.store, workspaceId + '/blobs/')
);
},
getRemoteBlobStorages() {

View File

@@ -1,13 +1,15 @@
import type { Awareness } from 'y-protocols/awareness.js';
export interface AwarenessConnection {
connect(): void;
connect(awareness: Awareness): void;
disconnect(): void;
}
export class AwarenessEngine {
constructor(public readonly connections: AwarenessConnection[]) {}
connect() {
this.connections.forEach(connection => connection.connect());
connect(awareness: Awareness) {
this.connections.forEach(connection => connection.connect(awareness));
}
disconnect() {

View File

@@ -29,6 +29,9 @@ export interface BlobStatus {
* all operations priority use local, then use remote.
*/
export class BlobEngine {
readonly name = 'blob-engine';
readonly readonly = this.local.readonly;
private abort: AbortController | null = null;
readonly isStorageOverCapacity$ = new LiveData(false);