import api from "@/lib/api-client"; import { IAddSpaceMember, IChangeSpaceMemberRole, IExportSpaceParams, IRemoveSpaceMember, ISpace, ISpaceMember, } from "@/features/space/types/space.types"; import { IPagination, QueryParams } from "@/lib/types.ts"; import { saveAs } from "file-saver"; export async function getSpaces( params?: QueryParams, ): Promise> { const req = await api.post("/spaces", params); return req.data; } export async function getSpaceById(spaceId: string): Promise { const req = await api.post("/spaces/info", { spaceId }); return req.data; } export async function createSpace(data: Partial): Promise { const req = await api.post("/spaces/create", data); return req.data; } export async function updateSpace(data: Partial): Promise { const req = await api.post("/spaces/update", data); return req.data; } export async function deleteSpace(spaceId: string): Promise { await api.post("/spaces/delete", { spaceId }); } export async function getSpaceMembers( spaceId: string, params?: QueryParams, ): Promise> { const req = await api.post("/spaces/members", { spaceId, ...params }); return req.data; } export async function addSpaceMember(data: IAddSpaceMember): Promise { await api.post("/spaces/members/add", data); } export async function removeSpaceMember( data: IRemoveSpaceMember, ): Promise { await api.post("/spaces/members/remove", data); } export async function changeMemberRole( data: IChangeSpaceMemberRole, ): Promise { await api.post("/spaces/members/change-role", data); } export async function exportSpace(data: IExportSpaceParams): Promise { const req = await api.post("/spaces/export", data, { responseType: "blob", }); const fileName = req?.headers["content-disposition"] .split("filename=")[1] .replace(/"/g, ""); saveAs(req.data, decodeURIComponent(fileName)); }