Files
AFFiNE-Mirror/packages/frontend/workspace-impl/src/index.ts

46 lines
1.5 KiB
TypeScript

import type { ServiceCollection } from '@toeverything/infra';
import {
GlobalState,
Workspace,
WorkspaceFactory,
WorkspaceListProvider,
WorkspaceLocalState,
WorkspaceScope,
} from '@toeverything/infra';
import { CloudWorkspaceFactory, CloudWorkspaceListProvider } from './cloud';
import { LocalWorkspaceFactory, LocalWorkspaceListProvider } from './local';
import { LOCAL_WORKSPACE_LOCAL_STORAGE_KEY } from './local/consts';
import { WorkspaceLocalStateImpl } from './local-state';
export * from './cloud';
export * from './local';
export function configureWorkspaceImplServices(services: ServiceCollection) {
services
.addImpl(WorkspaceListProvider('affine-cloud'), CloudWorkspaceListProvider)
.addImpl(WorkspaceFactory('affine-cloud'), CloudWorkspaceFactory)
.addImpl(WorkspaceListProvider('local'), LocalWorkspaceListProvider)
.addImpl(WorkspaceFactory('local'), LocalWorkspaceFactory)
.scope(WorkspaceScope)
.addImpl(WorkspaceLocalState, WorkspaceLocalStateImpl, [
Workspace,
GlobalState,
]);
}
/**
* a hack for directly add local workspace to workspace list
* Used after copying sqlite database file to appdata folder
*/
export function _addLocalWorkspace(id: string) {
const allWorkspaceIDs: string[] = JSON.parse(
localStorage.getItem(LOCAL_WORKSPACE_LOCAL_STORAGE_KEY) ?? '[]'
);
allWorkspaceIDs.push(id);
localStorage.setItem(
LOCAL_WORKSPACE_LOCAL_STORAGE_KEY,
JSON.stringify(allWorkspaceIDs)
);
}