mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-12 07:36:42 +08:00
ad9b0303c4
To support multiple instances, this PR removes some atoms and implements them using the new DI system. removed atom - `pageSettingsAtom` - `currentPageIdAtom` - `currentModeAtom`
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import type { ServiceCollection } from '@toeverything/infra';
|
|
import {
|
|
GlobalState,
|
|
Workspace,
|
|
WorkspaceFactory,
|
|
WorkspaceListProvider,
|
|
WorkspaceLocalState,
|
|
WorkspaceScope,
|
|
} from '@toeverything/infra';
|
|
|
|
import { CloudWorkspaceFactory, CloudWorkspaceListProvider } from './cloud';
|
|
import {
|
|
LOCAL_WORKSPACE_LOCAL_STORAGE_KEY,
|
|
LocalWorkspaceFactory,
|
|
LocalWorkspaceListProvider,
|
|
} from './local';
|
|
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)
|
|
);
|
|
}
|