// services import { IWorkspace, IWorkspaceMemberMe, IWorkspaceMember, IWorkspaceMemberInvitation, ILastActiveWorkspaceDetails, IWorkspaceSearchResults, IProductUpdateResponse, IWorkspaceBulkInviteFormData, IWorkspaceViewProps, IUserProjectsRole, IWorkspaceView, TIssuesResponse, } from "@plane/types"; import { API_BASE_URL } from "@/helpers/common.helper"; import { APIService } from "@/services/api.service"; // helpers // types export class WorkspaceService extends APIService { constructor() { super(API_BASE_URL); } async userWorkspaces(): Promise { return this.get("/api/users/me/workspaces/") .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async getWorkspace(workspaceSlug: string): Promise { return this.get(`/api/workspaces/${workspaceSlug}/`) .then((response) => response?.data) .catch((error) => { throw error?.response; }); } async createWorkspace(data: Partial): Promise { return this.post("/api/workspaces/", data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async updateWorkspace(workspaceSlug: string, data: Partial): Promise { return this.patch(`/api/workspaces/${workspaceSlug}/`, data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async deleteWorkspace(workspaceSlug: string): Promise { return this.delete(`/api/workspaces/${workspaceSlug}/`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async inviteWorkspace(workspaceSlug: string, data: IWorkspaceBulkInviteFormData): Promise { return this.post(`/api/workspaces/${workspaceSlug}/invitations/`, data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async joinWorkspace(workspaceSlug: string, invitationId: string, data: any): Promise { return this.post(`/api/workspaces/${workspaceSlug}/invitations/${invitationId}/join/`, data, { headers: {}, }) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async joinWorkspaces(data: any): Promise { return this.post("/api/users/me/workspaces/invitations/", data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async getLastActiveWorkspaceAndProjects(): Promise { return this.get("/api/users/last-visited-workspace/") .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async userWorkspaceInvitations(): Promise { return this.get("/api/users/me/workspaces/invitations/") .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async workspaceMemberMe(workspaceSlug: string): Promise { return this.get(`/api/workspaces/${workspaceSlug}/workspace-members/me/`) .then((response) => response?.data) .catch((error) => { throw error?.response; }); } async updateWorkspaceView(workspaceSlug: string, data: { view_props: IWorkspaceViewProps }): Promise { return this.post(`/api/workspaces/${workspaceSlug}/workspace-views/`, data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async fetchWorkspaceMembers(workspaceSlug: string): Promise { return this.get(`/api/workspaces/${workspaceSlug}/members/`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async updateWorkspaceMember( workspaceSlug: string, memberId: string, data: Partial ): Promise { return this.patch(`/api/workspaces/${workspaceSlug}/members/${memberId}/`, data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async deleteWorkspaceMember(workspaceSlug: string, memberId: string): Promise { return this.delete(`/api/workspaces/${workspaceSlug}/members/${memberId}/`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async workspaceInvitations(workspaceSlug: string): Promise { return this.get(`/api/workspaces/${workspaceSlug}/invitations/`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async getWorkspaceInvitation(workspaceSlug: string, invitationId: string): Promise { return this.get(`/api/workspaces/${workspaceSlug}/invitations/${invitationId}/join/`, { headers: {} }) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async updateWorkspaceInvitation( workspaceSlug: string, invitationId: string, data: Partial ): Promise { return this.patch(`/api/workspaces/${workspaceSlug}/invitations/${invitationId}/`, data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async deleteWorkspaceInvitations(workspaceSlug: string, invitationId: string): Promise { return this.delete(`/api/workspaces/${workspaceSlug}/invitations/${invitationId}/`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async workspaceSlugCheck(slug: string): Promise { return this.get(`/api/workspace-slug-check/?slug=${slug}`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async searchWorkspace( workspaceSlug: string, params: { project_id?: string; search: string; workspace_search: boolean; } ): Promise { return this.get(`/api/workspaces/${workspaceSlug}/search/`, { params, }) .then((res) => res?.data) .catch((error) => { throw error?.response?.data; }); } async getProductUpdates(): Promise { return this.get("/api/release-notes/") .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async createView(workspaceSlug: string, data: Partial): Promise { return this.post(`/api/workspaces/${workspaceSlug}/views/`, data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async updateView(workspaceSlug: string, viewId: string, data: Partial): Promise { return this.patch(`/api/workspaces/${workspaceSlug}/views/${viewId}/`, data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async deleteView(workspaceSlug: string, viewId: string): Promise { return this.delete(`/api/workspaces/${workspaceSlug}/views/${viewId}/`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async getAllViews(workspaceSlug: string): Promise { return this.get(`/api/workspaces/${workspaceSlug}/views/`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async getViewDetails(workspaceSlug: string, viewId: string): Promise { return this.get(`/api/workspaces/${workspaceSlug}/views/${viewId}/`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async getViewIssues(workspaceSlug: string, params: any, config = {}): Promise { return this.get( `/api/workspaces/${workspaceSlug}/issues/`, { params, }, config ) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async getWorkspaceUserProjectsRole(workspaceSlug: string): Promise { return this.get(`/api/users/me/workspaces/${workspaceSlug}/project-roles/`) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } }