import api from "@/lib/api-client"; import { IUser } from "@/features/user/types/user.types"; import { ICreateInvite, IInvitation, IWorkspace, IAcceptInvite, } from "../types/workspace.types"; import { IPagination, QueryParams } from "@/lib/types.ts"; import { ITokenResponse } from "@/features/auth/types/auth.types.ts"; export async function getWorkspace(): Promise { const req = await api.post("/workspace/info"); return req.data; } export async function getWorkspacePublicData(): Promise { const req = await api.post("/workspace/public"); return req.data; } // Todo: fix all paginated types export async function getWorkspaceMembers( params?: QueryParams, ): Promise> { const req = await api.post("/workspace/members", params); return req.data; } export async function updateWorkspace(data: Partial) { const req = await api.post("/workspace/update", data); return req.data; } export async function changeMemberRole(data: { userId: string; role: string; }): Promise { await api.post("/workspace/members/role", data); } export async function getPendingInvitations( params?: QueryParams, ): Promise> { const req = await api.post("/workspace/invites", params); return req.data; } export async function createInvitation(data: ICreateInvite) { const req = await api.post("/workspace/invites/create", data); return req.data; } export async function acceptInvitation( data: IAcceptInvite, ): Promise { const req = await api.post("/workspace/invites/accept", data); return req.data; } export async function resendInvitation(data: { invitationId: string; }): Promise { console.log(data); await api.post("/workspace/invites/resend", data); } export async function revokeInvitation(data: { invitationId: string; }): Promise { await api.post("/workspace/invites/revoke", data); } export async function getInvitationById(data: { invitationId: string; }): Promise { const req = await api.post("/workspace/invites/info", data); return req.data; } export async function uploadLogo(file: File) { const formData = new FormData(); formData.append("type", "workspace-logo"); formData.append("image", file); const req = await api.post("/attachments/upload-image", formData, { headers: { "Content-Type": "multipart/form-data", }, }); return req.data; }