// services import APIService from "services/api.service"; const { NEXT_PUBLIC_API_BASE_URL } = process.env; // types import { IWorkspace, IWorkspaceMember, IWorkspaceMemberInvitation, ILastActiveWorkspaceDetails, } from "types"; class WorkspaceService extends APIService { constructor() { super(NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000"); } 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: any): Promise { return this.post(`/api/workspaces/${workspaceSlug}/invite/`, data) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async joinWorkspace(workspaceSlug: string, invitationId: string, data: any): Promise { return this.post( `/api/users/me/invitations/workspaces/${workspaceSlug}/${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/invitations/workspaces/", 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/invitations/workspaces/") .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async workspaceMembers(workspaceSlug: string): Promise { return this.get(`/api/workspaces/${workspaceSlug}/members/`) .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?.data; }); } async updateWorkspaceMember( workspaceSlug: string, memberId: string, data: Partial ): Promise { return this.put(`/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(invitationId: string): Promise { return this.get(`/api/users/me/invitations/${invitationId}/`, { headers: {} }) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } async updateWorkspaceInvitation( workspaceSlug: string, invitationId: string ): Promise { return this.put(`/api/workspaces/${workspaceSlug}/invitations/${invitationId}/`) .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; }); } } export default new WorkspaceService();