plane/web/store/workspace.store.ts

80 lines
1.9 KiB
TypeScript
Raw Normal View History

2024-03-04 14:39:46 +00:00
import { makeObservable, observable } from "mobx";
import { IUser, IWorkspace } from "@plane/types";
import { DataStore } from "./dataMaps";
export interface IWorkspaceModel {
id: string;
owner: IUser;
created_at: Date;
updated_at: Date;
name: string;
url: string;
logo: string | null;
total_members: number;
slug: string;
created_by: string;
updated_by: string;
organization_size: string;
total_issues: number;
}
export class WorkspaceModel implements IWorkspaceModel {
id: string;
owner: IUser;
created_at: Date;
updated_at: Date;
name: string;
url: string;
logo: string | null;
total_members: number;
slug: string;
created_by: string;
updated_by: string;
organization_size: string;
total_issues: number;
// root store
dataStore;
constructor(workspace: IWorkspace, _dataStore: DataStore) {
makeObservable(this, {
name: observable.ref,
url: observable.ref,
logo: observable.ref,
});
this.dataStore = _dataStore;
this.id = workspace.id;
this.owner = workspace.owner;
this.created_at = workspace.created_at;
this.updated_at = workspace.updated_at;
this.name = workspace.name;
this.url = workspace.url;
this.logo = workspace.logo;
this.total_members = workspace.total_members;
this.slug = workspace.slug;
this.created_by = workspace.created_by;
this.updated_by = workspace.updated_by;
this.organization_size = workspace.organization_size;
this.total_issues = workspace.total_issues;
}
2024-03-05 07:59:28 +00:00
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,
};
}
2024-03-04 14:39:46 +00:00
}