refactor(core): refactor atom to use di (#5831)

To support multiple instances, this PR removes some atoms and implements them using the new DI system.

removed atom

- `pageSettingsAtom`
- `currentPageIdAtom`
- `currentModeAtom`
This commit is contained in:
EYHN
2024-02-27 03:50:53 +00:00
parent 0dabb08217
commit ad9b0303c4
60 changed files with 602 additions and 626 deletions

View File

@@ -0,0 +1,31 @@
import type {
GlobalState,
Workspace,
WorkspaceLocalState,
} from '@toeverything/infra';
export class WorkspaceLocalStateImpl implements WorkspaceLocalState {
constructor(
private readonly workspace: Workspace,
private readonly globalState: GlobalState
) {}
get<T>(key: string): T | null {
return this.globalState.get<T>(
`workspace-state:${this.workspace.id}:${key}`
);
}
watch<T>(key: string) {
return this.globalState.watch<T>(
`workspace-state:${this.workspace.id}:${key}`
);
}
set<T>(key: string, value: T | null): void {
return this.globalState.set<T>(
`workspace-state:${this.workspace.id}:${key}`,
value
);
}
}