fix: merge issue
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@blocksuite/blocks": "0.3.1-20230109032243-37ad3ba",
|
"@blocksuite/blocks": "0.3.1-20230109032243-37ad3ba",
|
||||||
"@blocksuite/store": "0.3.1-20230109032243-37ad3ba",
|
"@blocksuite/store": "0.3.1-20230109032243-37ad3ba",
|
||||||
|
"@tauri-apps/api": "^1.2.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"encoding": "^0.1.13",
|
"encoding": "^0.1.13",
|
||||||
"firebase": "^9.15.0",
|
"firebase": "^9.15.0",
|
||||||
@@ -36,7 +37,8 @@
|
|||||||
"ky-universal": "^0.11.0",
|
"ky-universal": "^0.11.0",
|
||||||
"lib0": "^0.2.58",
|
"lib0": "^0.2.58",
|
||||||
"swr": "^2.0.0",
|
"swr": "^2.0.0",
|
||||||
"y-protocols": "^1.0.5"
|
"y-protocols": "^1.0.5",
|
||||||
|
"yjs": "^13.5.44"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@blocksuite/blocks": "0.3.1-*",
|
"@blocksuite/blocks": "0.3.1-*",
|
||||||
|
|||||||
@@ -6,17 +6,15 @@ import * as ipcMethods from './ipc/methods.js';
|
|||||||
import {
|
import {
|
||||||
CreateWorkspaceInfoParams,
|
CreateWorkspaceInfoParams,
|
||||||
ProviderConstructorParams,
|
ProviderConstructorParams,
|
||||||
WorkspaceMeta0,
|
|
||||||
} from '../base.js';
|
} from '../base.js';
|
||||||
import { BlockSchema } from '@blocksuite/blocks/models';
|
|
||||||
import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
|
import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store';
|
||||||
import { IPCBlobProvider } from './blocksuite-provider/blob.js';
|
import { IPCBlobProvider } from './blocksuite-provider/blob.js';
|
||||||
import type { WorkspaceDetail } from '../affine/apis/workspace.js';
|
import { WorkspaceUnit } from 'src/workspace-unit.js';
|
||||||
import { setDefaultAvatar } from '../utils.js';
|
import { createWorkspaceUnit, loadWorkspaceUnit } from '../local/utils.js';
|
||||||
|
import { WorkspaceWithPermission } from './ipc/types/workspace.js';
|
||||||
|
|
||||||
export class TauriIPCProvider extends LocalProvider {
|
export class TauriIPCProvider extends LocalProvider {
|
||||||
static id = 'tauri-ipc';
|
static id = 'tauri-ipc';
|
||||||
private _workspacesCache: Map<string, BlocksuiteWorkspace> = new Map();
|
|
||||||
/**
|
/**
|
||||||
* // TODO: We only have one user in this version of app client. But may support switch user later.
|
* // TODO: We only have one user in this version of app client. But may support switch user later.
|
||||||
*/
|
*/
|
||||||
@@ -78,27 +76,6 @@ export class TauriIPCProvider extends LocalProvider {
|
|||||||
await super.clear();
|
await super.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async createWorkspaceInfo(
|
|
||||||
meta: CreateWorkspaceInfoParams
|
|
||||||
): Promise<WorkspaceMeta0> {
|
|
||||||
const { id } = await ipcMethods.createWorkspace({
|
|
||||||
name: meta.name,
|
|
||||||
// TODO: get userID here
|
|
||||||
user_id: this.#defaultUserID,
|
|
||||||
});
|
|
||||||
|
|
||||||
const workspaceInfo: WorkspaceMeta0 = {
|
|
||||||
name: meta.name,
|
|
||||||
id: id,
|
|
||||||
avatar: '',
|
|
||||||
owner: await this.getUserInfo(),
|
|
||||||
memberCount: 1,
|
|
||||||
provider: this.id,
|
|
||||||
syncMode: 'all',
|
|
||||||
};
|
|
||||||
return workspaceInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
override async warpWorkspace(blocksuiteWorkspace: BlocksuiteWorkspace) {
|
override async warpWorkspace(blocksuiteWorkspace: BlocksuiteWorkspace) {
|
||||||
const { doc, room } = blocksuiteWorkspace;
|
const { doc, room } = blocksuiteWorkspace;
|
||||||
assert(room);
|
assert(room);
|
||||||
@@ -111,131 +88,47 @@ export class TauriIPCProvider extends LocalProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override async createWorkspace(
|
public override async createWorkspace(
|
||||||
blocksuiteWorkspace: BlocksuiteWorkspace,
|
meta: CreateWorkspaceInfoParams
|
||||||
meta: WorkspaceMeta0
|
): Promise<WorkspaceUnit | undefined> {
|
||||||
): Promise<BlocksuiteWorkspace | undefined> {
|
this._logger('Creating client app workspace');
|
||||||
const workspaceId = blocksuiteWorkspace.room;
|
|
||||||
assert(workspaceId, 'Blocksuite Workspace without room(workspaceId).');
|
|
||||||
this._logger('Creating affine workspace');
|
|
||||||
|
|
||||||
const workspaceInfo: WorkspaceMeta0 = {
|
const { id } = await ipcMethods.createWorkspace({
|
||||||
name: meta.name,
|
name: meta.name,
|
||||||
id: workspaceId,
|
// TODO: get userID here
|
||||||
avatar: '',
|
|
||||||
owner: undefined,
|
|
||||||
memberCount: 1,
|
|
||||||
provider: this.id,
|
|
||||||
syncMode: 'all',
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!blocksuiteWorkspace.meta.avatar) {
|
|
||||||
await setDefaultAvatar(blocksuiteWorkspace);
|
|
||||||
workspaceInfo.avatar = blocksuiteWorkspace.meta.avatar;
|
|
||||||
}
|
|
||||||
this._workspaces.add(workspaceInfo);
|
|
||||||
return blocksuiteWorkspace;
|
|
||||||
}
|
|
||||||
|
|
||||||
override async loadWorkspaces() {
|
|
||||||
const { workspaces: workspacesList } = await ipcMethods.getWorkspaces({
|
|
||||||
user_id: this.#defaultUserID,
|
user_id: this.#defaultUserID,
|
||||||
});
|
});
|
||||||
const workspaces: WorkspaceMeta0[] = workspacesList.map(w => {
|
|
||||||
return {
|
const workspaceUnit = await createWorkspaceUnit({
|
||||||
...w,
|
name: meta.name,
|
||||||
memberCount: 0,
|
id,
|
||||||
name: '',
|
published: false,
|
||||||
provider: this.id,
|
avatar: '',
|
||||||
syncMode: 'all',
|
owner: undefined,
|
||||||
};
|
syncMode: 'core',
|
||||||
|
memberCount: 1,
|
||||||
|
provider: this.id,
|
||||||
});
|
});
|
||||||
const workspaceInstances = workspaces.map(({ id, name, avatar }) => {
|
this._workspaces.add(workspaceUnit);
|
||||||
const workspace =
|
return workspaceUnit;
|
||||||
this._workspacesCache.get(id) ||
|
}
|
||||||
new BlocksuiteWorkspace({
|
|
||||||
room: id,
|
override async loadWorkspaces(): Promise<WorkspaceUnit[]> {
|
||||||
}).register(BlockSchema);
|
const { workspaces } = await ipcMethods.getWorkspaces({
|
||||||
this._workspacesCache.set(id, workspace);
|
user_id: this.#defaultUserID,
|
||||||
if (workspace) {
|
});
|
||||||
workspace.meta.setName(name);
|
const workspaceUnits = await Promise.all(
|
||||||
if (avatar) {
|
workspaces.map((meta: WorkspaceWithPermission) => {
|
||||||
workspace.meta.setAvatar(avatar);
|
return loadWorkspaceUnit({
|
||||||
}
|
...meta,
|
||||||
return new Promise<BlocksuiteWorkspace>(resolve => {
|
memberCount: 1,
|
||||||
ipcMethods.getYDocument({ id }).then(({ update }) => {
|
// TODO: load name here
|
||||||
Y.applyUpdate(workspace.doc, new Uint8Array(update));
|
name: '',
|
||||||
resolve(workspace);
|
provider: this.id,
|
||||||
});
|
syncMode: 'all',
|
||||||
});
|
});
|
||||||
} else {
|
})
|
||||||
return Promise.resolve(null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
(await Promise.all(workspaceInstances)).forEach((workspace, i) => {
|
|
||||||
if (workspace) {
|
|
||||||
workspaces[i] = {
|
|
||||||
...workspaces[i],
|
|
||||||
name: workspace.meta.name,
|
|
||||||
avatar: workspace.meta.avatar,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const getDetailList = workspacesList.map(
|
|
||||||
async (
|
|
||||||
workspaceWithPermission
|
|
||||||
): Promise<{
|
|
||||||
id: string;
|
|
||||||
detail:
|
|
||||||
| (Omit<WorkspaceDetail, 'owner'> & {
|
|
||||||
owner?: Partial<WorkspaceDetail['owner']>;
|
|
||||||
})
|
|
||||||
| null;
|
|
||||||
}> => {
|
|
||||||
const { id, permission, created_at } = workspaceWithPermission;
|
|
||||||
const { workspace } = await ipcMethods.getWorkspace({ id });
|
|
||||||
return {
|
|
||||||
id,
|
|
||||||
detail: {
|
|
||||||
...workspace,
|
|
||||||
owner: workspace.owner
|
|
||||||
? {
|
|
||||||
...workspace.owner,
|
|
||||||
create_at: String(created_at),
|
|
||||||
avatar_url: workspace.owner.avatar_url ?? undefined,
|
|
||||||
id: String(workspace.owner.id),
|
|
||||||
}
|
|
||||||
: undefined,
|
|
||||||
permission_type: permission,
|
|
||||||
create_at: created_at,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
const ownerList = await Promise.all(getDetailList);
|
this._workspaces.add(workspaceUnits);
|
||||||
(await Promise.all(ownerList)).forEach(detail => {
|
return workspaceUnits;
|
||||||
if (detail) {
|
|
||||||
const { id, detail: workspaceDetail } = detail;
|
|
||||||
if (workspaceDetail) {
|
|
||||||
const { owner, member_count } = workspaceDetail;
|
|
||||||
const currentWorkspace = workspaces.find(w => w.id === id);
|
|
||||||
if (currentWorkspace && owner) {
|
|
||||||
currentWorkspace.owner = {
|
|
||||||
id: owner.id!,
|
|
||||||
name: owner.name!,
|
|
||||||
avatar: owner.avatar_url!,
|
|
||||||
email: owner.email!,
|
|
||||||
};
|
|
||||||
currentWorkspace.memberCount = member_count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
workspaces.forEach(workspace => {
|
|
||||||
this._workspaces.add(workspace);
|
|
||||||
});
|
|
||||||
|
|
||||||
return workspaces;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,13 @@ import { getLogger } from '../logger';
|
|||||||
// provider: string;
|
// provider: string;
|
||||||
// };
|
// };
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface Window {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||||
|
__TAURI_IPC__: Function;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export type User = {
|
export type User = {
|
||||||
name: string;
|
name: string;
|
||||||
id: string;
|
id: string;
|
||||||
|
|||||||
54
pnpm-lock.yaml
generated
54
pnpm-lock.yaml
generated
@@ -235,6 +235,7 @@ importers:
|
|||||||
'@blocksuite/blocks': 0.3.1-20230109032243-37ad3ba
|
'@blocksuite/blocks': 0.3.1-20230109032243-37ad3ba
|
||||||
'@blocksuite/store': 0.3.1-20230109032243-37ad3ba
|
'@blocksuite/store': 0.3.1-20230109032243-37ad3ba
|
||||||
'@playwright/test': ^1.29.1
|
'@playwright/test': ^1.29.1
|
||||||
|
'@tauri-apps/api': ^1.2.0
|
||||||
'@types/debug': ^4.1.7
|
'@types/debug': ^4.1.7
|
||||||
debug: ^4.3.4
|
debug: ^4.3.4
|
||||||
encoding: ^0.1.13
|
encoding: ^0.1.13
|
||||||
@@ -247,9 +248,11 @@ importers:
|
|||||||
swr: ^2.0.0
|
swr: ^2.0.0
|
||||||
typescript: ^4.8.4
|
typescript: ^4.8.4
|
||||||
y-protocols: ^1.0.5
|
y-protocols: ^1.0.5
|
||||||
|
yjs: ^13.5.44
|
||||||
dependencies:
|
dependencies:
|
||||||
'@blocksuite/blocks': 0.3.1-20230109032243-37ad3ba
|
'@blocksuite/blocks': 0.3.1-20230109032243-37ad3ba_yjs@13.5.44
|
||||||
'@blocksuite/store': 0.3.1-20230109032243-37ad3ba
|
'@blocksuite/store': 0.3.1-20230109032243-37ad3ba_yjs@13.5.44
|
||||||
|
'@tauri-apps/api': 1.2.0
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
encoding: 0.1.13
|
encoding: 0.1.13
|
||||||
firebase: 9.15.0_encoding@0.1.13
|
firebase: 9.15.0_encoding@0.1.13
|
||||||
@@ -259,6 +262,7 @@ importers:
|
|||||||
lib0: 0.2.58
|
lib0: 0.2.58
|
||||||
swr: 2.0.0
|
swr: 2.0.0
|
||||||
y-protocols: 1.0.5
|
y-protocols: 1.0.5
|
||||||
|
yjs: 13.5.44
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@playwright/test': 1.29.1
|
'@playwright/test': 1.29.1
|
||||||
'@types/debug': 4.1.7
|
'@types/debug': 4.1.7
|
||||||
@@ -1611,26 +1615,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
|
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@blocksuite/blocks/0.3.1-20230109032243-37ad3ba:
|
|
||||||
resolution: {integrity: sha512-UTlbk0Is7TMRBbvUyM2nivbqM/TLwRj1qArMYbOmvDGUNYadWo68cTwv/Ej2WwiKn22q4/4JHryGsv3gTCRz1Q==}
|
|
||||||
dependencies:
|
|
||||||
'@blocksuite/phasor': 0.3.1-20230109032243-37ad3ba
|
|
||||||
'@blocksuite/store': 0.3.1-20230109032243-37ad3ba
|
|
||||||
'@tldraw/intersect': 1.8.0
|
|
||||||
autosize: 5.0.2
|
|
||||||
highlight.js: 11.7.0
|
|
||||||
hotkeys-js: 3.10.1
|
|
||||||
lit: 2.5.0
|
|
||||||
perfect-freehand: 1.2.0
|
|
||||||
quill: 1.3.7
|
|
||||||
quill-cursors: 4.0.0
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- bufferutil
|
|
||||||
- supports-color
|
|
||||||
- utf-8-validate
|
|
||||||
- yjs
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@blocksuite/blocks/0.3.1-20230109032243-37ad3ba_yjs@13.5.44:
|
/@blocksuite/blocks/0.3.1-20230109032243-37ad3ba_yjs@13.5.44:
|
||||||
resolution: {integrity: sha512-UTlbk0Is7TMRBbvUyM2nivbqM/TLwRj1qArMYbOmvDGUNYadWo68cTwv/Ej2WwiKn22q4/4JHryGsv3gTCRz1Q==}
|
resolution: {integrity: sha512-UTlbk0Is7TMRBbvUyM2nivbqM/TLwRj1qArMYbOmvDGUNYadWo68cTwv/Ej2WwiKn22q4/4JHryGsv3gTCRz1Q==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1676,12 +1660,6 @@ packages:
|
|||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@blocksuite/phasor/0.3.1-20230109032243-37ad3ba:
|
|
||||||
resolution: {integrity: sha512-mL1gSQ3rzrjdQSbWPtgyMXpbbl266UUjw26d0aIjkOh+iMMI6rWtmKWDoiDkO7tejIjwSNQ4w5zJOjJRIj+mSA==}
|
|
||||||
peerDependencies:
|
|
||||||
yjs: ^13
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@blocksuite/phasor/0.3.1-20230109032243-37ad3ba_yjs@13.5.44:
|
/@blocksuite/phasor/0.3.1-20230109032243-37ad3ba_yjs@13.5.44:
|
||||||
resolution: {integrity: sha512-mL1gSQ3rzrjdQSbWPtgyMXpbbl266UUjw26d0aIjkOh+iMMI6rWtmKWDoiDkO7tejIjwSNQ4w5zJOjJRIj+mSA==}
|
resolution: {integrity: sha512-mL1gSQ3rzrjdQSbWPtgyMXpbbl266UUjw26d0aIjkOh+iMMI6rWtmKWDoiDkO7tejIjwSNQ4w5zJOjJRIj+mSA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1690,26 +1668,6 @@ packages:
|
|||||||
yjs: 13.5.44
|
yjs: 13.5.44
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@blocksuite/store/0.3.1-20230109032243-37ad3ba:
|
|
||||||
resolution: {integrity: sha512-zOUz19jfhuhsUkx9BGEQPZWbPyD/AgX0LB7ShVRdd3YM73x25hD6tPLLz1HEV2b69XokC0P9oSru4aNomm4jkg==}
|
|
||||||
peerDependencies:
|
|
||||||
yjs: ^13
|
|
||||||
dependencies:
|
|
||||||
'@types/flexsearch': 0.7.3
|
|
||||||
'@types/quill': 1.3.10
|
|
||||||
buffer: 6.0.3
|
|
||||||
flexsearch: 0.7.21
|
|
||||||
idb-keyval: 6.2.0
|
|
||||||
ky: 0.33.1
|
|
||||||
lib0: 0.2.58
|
|
||||||
y-protocols: 1.0.5
|
|
||||||
y-webrtc: 10.2.3
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- bufferutil
|
|
||||||
- supports-color
|
|
||||||
- utf-8-validate
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/@blocksuite/store/0.3.1-20230109032243-37ad3ba_yjs@13.5.44:
|
/@blocksuite/store/0.3.1-20230109032243-37ad3ba_yjs@13.5.44:
|
||||||
resolution: {integrity: sha512-zOUz19jfhuhsUkx9BGEQPZWbPyD/AgX0LB7ShVRdd3YM73x25hD6tPLLz1HEV2b69XokC0P9oSru4aNomm4jkg==}
|
resolution: {integrity: sha512-zOUz19jfhuhsUkx9BGEQPZWbPyD/AgX0LB7ShVRdd3YM73x25hD6tPLLz1HEV2b69XokC0P9oSru4aNomm4jkg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|||||||
Reference in New Issue
Block a user