2023-12-15 12:32:15 +00:00
|
|
|
import { makeObservable, observable } from "mobx";
|
|
|
|
// types
|
|
|
|
import { RootStore } from "store/root.store";
|
|
|
|
import { IUserLite } from "types";
|
|
|
|
import { IWorkspaceMemberStore, WorkspaceMemberStore } from "./workspace-member.store";
|
|
|
|
import { IProjectMemberStore, ProjectMemberStore } from "./project-member.store";
|
|
|
|
|
|
|
|
export interface IMemberRootStore {
|
|
|
|
// observables
|
|
|
|
memberMap: Record<string, IUserLite>;
|
|
|
|
// sub-stores
|
2023-12-18 07:01:57 +00:00
|
|
|
workspace: IWorkspaceMemberStore;
|
|
|
|
project: IProjectMemberStore;
|
2023-12-15 12:32:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export class MemberRootStore implements IMemberRootStore {
|
|
|
|
// observables
|
|
|
|
memberMap: Record<string, IUserLite> = {};
|
|
|
|
// root store
|
|
|
|
rootStore: RootStore;
|
|
|
|
// sub-stores
|
2023-12-18 07:01:57 +00:00
|
|
|
workspace: IWorkspaceMemberStore;
|
|
|
|
project: IProjectMemberStore;
|
2023-12-15 12:32:15 +00:00
|
|
|
|
|
|
|
constructor(_rootStore: RootStore) {
|
|
|
|
makeObservable(this, {
|
|
|
|
// observables
|
|
|
|
memberMap: observable,
|
|
|
|
});
|
|
|
|
|
|
|
|
// root store
|
|
|
|
this.rootStore = _rootStore;
|
|
|
|
// sub-stores
|
2023-12-18 07:01:57 +00:00
|
|
|
this.workspace = new WorkspaceMemberStore(_rootStore);
|
|
|
|
this.project = new ProjectMemberStore(_rootStore);
|
2023-12-15 12:32:15 +00:00
|
|
|
}
|
|
|
|
}
|