feat(ui): reconcile backup UI changes with current routing and interaction features
This commit is contained in:
@@ -1,19 +1,33 @@
|
||||
import type { Project, ProjectWorkspace } from "@paperclip/shared";
|
||||
import { api } from "./client";
|
||||
|
||||
function withCompanyScope(path: string, companyId?: string) {
|
||||
if (!companyId) return path;
|
||||
const separator = path.includes("?") ? "&" : "?";
|
||||
return `${path}${separator}companyId=${encodeURIComponent(companyId)}`;
|
||||
}
|
||||
|
||||
function projectPath(id: string, companyId?: string, suffix = "") {
|
||||
return withCompanyScope(`/projects/${encodeURIComponent(id)}${suffix}`, companyId);
|
||||
}
|
||||
|
||||
export const projectsApi = {
|
||||
list: (companyId: string) => api.get<Project[]>(`/companies/${companyId}/projects`),
|
||||
get: (id: string) => api.get<Project>(`/projects/${id}`),
|
||||
get: (id: string, companyId?: string) => api.get<Project>(projectPath(id, companyId)),
|
||||
create: (companyId: string, data: Record<string, unknown>) =>
|
||||
api.post<Project>(`/companies/${companyId}/projects`, data),
|
||||
update: (id: string, data: Record<string, unknown>) => api.patch<Project>(`/projects/${id}`, data),
|
||||
listWorkspaces: (projectId: string) =>
|
||||
api.get<ProjectWorkspace[]>(`/projects/${projectId}/workspaces`),
|
||||
createWorkspace: (projectId: string, data: Record<string, unknown>) =>
|
||||
api.post<ProjectWorkspace>(`/projects/${projectId}/workspaces`, data),
|
||||
updateWorkspace: (projectId: string, workspaceId: string, data: Record<string, unknown>) =>
|
||||
api.patch<ProjectWorkspace>(`/projects/${projectId}/workspaces/${workspaceId}`, data),
|
||||
removeWorkspace: (projectId: string, workspaceId: string) =>
|
||||
api.delete<ProjectWorkspace>(`/projects/${projectId}/workspaces/${workspaceId}`),
|
||||
remove: (id: string) => api.delete<Project>(`/projects/${id}`),
|
||||
update: (id: string, data: Record<string, unknown>, companyId?: string) =>
|
||||
api.patch<Project>(projectPath(id, companyId), data),
|
||||
listWorkspaces: (projectId: string, companyId?: string) =>
|
||||
api.get<ProjectWorkspace[]>(projectPath(projectId, companyId, "/workspaces")),
|
||||
createWorkspace: (projectId: string, data: Record<string, unknown>, companyId?: string) =>
|
||||
api.post<ProjectWorkspace>(projectPath(projectId, companyId, "/workspaces"), data),
|
||||
updateWorkspace: (projectId: string, workspaceId: string, data: Record<string, unknown>, companyId?: string) =>
|
||||
api.patch<ProjectWorkspace>(
|
||||
projectPath(projectId, companyId, `/workspaces/${encodeURIComponent(workspaceId)}`),
|
||||
data,
|
||||
),
|
||||
removeWorkspace: (projectId: string, workspaceId: string, companyId?: string) =>
|
||||
api.delete<ProjectWorkspace>(projectPath(projectId, companyId, `/workspaces/${encodeURIComponent(workspaceId)}`)),
|
||||
remove: (id: string, companyId?: string) => api.delete<Project>(projectPath(id, companyId)),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user