diff --git a/packages/data-center/src/provider/affine/affine.ts b/packages/data-center/src/provider/affine/affine.ts index bf60a611c..9d717eb9e 100644 --- a/packages/data-center/src/provider/affine/affine.ts +++ b/packages/data-center/src/provider/affine/affine.ts @@ -8,9 +8,9 @@ import { storage } from './storage.js'; import assert from 'assert'; import { WebsocketProvider } from './sync.js'; // import { IndexedDBProvider } from '../local/indexeddb'; -import { getDefaultHeadImgBlob } from '../../utils/index.js'; import { getApis } from './apis/index.js'; import type { Apis, WorkspaceDetail, Callback } from './apis'; +import { setDefaultAvatar } from '../utils.js'; export interface AffineProviderConstructorParams extends ProviderConstructorParams { @@ -295,16 +295,8 @@ export class AffineProvider extends BaseProvider { }; if (!blocksuiteWorkspace.meta.avatar) { - // set default avatar - const blob = await getDefaultHeadImgBlob(meta.name); - const blobStorage = await blocksuiteWorkspace.blobs; - assert(blobStorage, 'No blob storage'); - const blobId = await blobStorage.set(blob); - const avatar = await blobStorage.get(blobId); - if (avatar) { - blocksuiteWorkspace.meta.setAvatar(avatar); - workspaceInfo.avatar = avatar; - } + await setDefaultAvatar(blocksuiteWorkspace); + workspaceInfo.avatar = blocksuiteWorkspace.meta.avatar; } this._workspaces.add(workspaceInfo); return blocksuiteWorkspace; diff --git a/packages/data-center/src/provider/local/local.ts b/packages/data-center/src/provider/local/local.ts index da87f5521..c4ea25d67 100644 --- a/packages/data-center/src/provider/local/local.ts +++ b/packages/data-center/src/provider/local/local.ts @@ -5,7 +5,7 @@ import { WorkspaceInfo, WorkspaceMeta } from '../../types'; import { Workspace as BlocksuiteWorkspace, uuidv4 } from '@blocksuite/store'; import { IndexedDBProvider } from './indexeddb.js'; import assert from 'assert'; -import { getDefaultHeadImgBlob } from '../../utils/index.js'; +import { setDefaultAvatar } from '../utils.js'; const WORKSPACE_KEY = 'workspaces'; @@ -97,16 +97,8 @@ export class LocalProvider extends BaseProvider { blocksuiteWorkspace.meta.setName(meta.name); if (!meta.avatar) { - // set default avatar - const blob = await getDefaultHeadImgBlob(meta.name); - const blobStorage = await blocksuiteWorkspace.blobs; - assert(blobStorage, 'No blob storage'); - const blobId = await blobStorage.set(blob); - const avatar = await blobStorage.get(blobId); - if (avatar) { - blocksuiteWorkspace.meta.setAvatar(avatar); - workspaceInfo.avatar = avatar; - } + await setDefaultAvatar(blocksuiteWorkspace); + workspaceInfo.avatar = blocksuiteWorkspace.meta.avatar; } this._workspaces.add(workspaceInfo); diff --git a/packages/data-center/src/provider/utils.ts b/packages/data-center/src/provider/utils.ts new file mode 100644 index 000000000..b0a08b92d --- /dev/null +++ b/packages/data-center/src/provider/utils.ts @@ -0,0 +1,16 @@ +import assert from 'assert'; +import { Workspace as BlocksuiteWorkspace } from '@blocksuite/store'; +import { getDefaultHeadImgBlob } from '../utils/index.js'; + +export const setDefaultAvatar = async ( + blocksuiteWorkspace: BlocksuiteWorkspace +) => { + const blob = await getDefaultHeadImgBlob(blocksuiteWorkspace.meta.name); + const blobStorage = await blocksuiteWorkspace.blobs; + assert(blobStorage, 'No blob storage'); + const blobId = await blobStorage.set(blob); + const avatar = await blobStorage.get(blobId); + if (avatar) { + blocksuiteWorkspace.meta.setAvatar(avatar); + } +};