mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-13 21:05:19 +00:00
https://github.com/toeverything/AFFiNE/blob/eyhn/feat/new-sync/packages/common/infra/src/workspace/engine/doc/README.md
46 lines
1.5 KiB
TypeScript
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)
|
|
);
|
|
}
|