minor changes in workspavcestore logic

This commit is contained in:
rahulramesha 2024-03-05 13:29:28 +05:30
parent 86e952eb1f
commit 852f662612
3 changed files with 23 additions and 7 deletions

View File

@ -7,7 +7,7 @@ import { set } from "lodash";
export interface IWorkspaceData {
workspaceMap: Record<string, WorkspaceModel>;
addWorkspaces: (workspaces: IWorkspace[]) => void;
addWorkspace: (workspaces: IWorkspace) => void;
deleteWorkspace: (workspaceId: string) => void;
getWorkspacebyId: (workspaceId: string) => WorkspaceModel | undefined;
}
@ -25,10 +25,8 @@ export class WorkspaceData implements IWorkspaceData {
this.dataStore = _dataStore;
}
addWorkspaces = (workspaces: IWorkspace[]) => {
workspaces.forEach((workspace) => {
set(this.workspaceMap, [workspace.id], new WorkspaceModel(workspace, this.dataStore));
});
addWorkspace = (workspace: IWorkspace) => {
set(this.workspaceMap, [workspace.id], new WorkspaceModel(workspace, this.dataStore));
};
deleteWorkspace = (workspaceId: string) => {

View File

@ -38,9 +38,9 @@ export class UserModel implements IUserModel {
fetchWorkspaces = async () => {
const workspaceResponse = await this.workspaceService.userWorkspaces();
this.data.workspace.addWorkspaces(workspaceResponse);
runInAction(() => {
workspaceResponse.forEach((workspace) => {
this.data.workspace.addWorkspace(workspace);
set(this.workspaces, [workspace.id], this.data.workspace.workspaceMap[workspace.id]);
});
});
@ -53,8 +53,8 @@ export class UserModel implements IUserModel {
*/
createWorkspace = async (data: Partial<IWorkspace>) =>
await this.workspaceService.createWorkspace(data).then((response) => {
this.data.workspace.addWorkspaces([response]);
runInAction(() => {
this.data.workspace.addWorkspace(response);
set(this.workspaces, [response.id], this.data.workspace.workspaceMap[response.id]);
});
return response;

View File

@ -58,4 +58,22 @@ export class WorkspaceModel implements IWorkspaceModel {
this.organization_size = workspace.organization_size;
this.total_issues = workspace.total_issues;
}
get toJSON() {
return {
id: this.id,
owner: this.owner,
created_at: this.created_at,
updated_at: this.updated_at,
name: this.name,
url: this.url,
logo: this.logo,
total_members: this.total_members,
slug: this.slug,
created_by: this.created_by,
updated_by: this.updated_by,
organization_size: this.organization_size,
total_issues: this.total_issues,
};
}
}