import api from "@/lib/api-client"; import { IExportPageParams, IMovePage, IPage, IPageInput, SidebarPagesParams, } from "@/features/page/types/page.types"; import { IAttachment, IPagination } from "@/lib/types.ts"; import { saveAs } from "file-saver"; export async function createPage(data: Partial): Promise { const req = await api.post("/pages/create", data); return req.data; } export async function getPageById( pageInput: Partial, ): Promise { const req = await api.post("/pages/info", pageInput); return req.data; } export async function updatePage(data: Partial): Promise { const req = await api.post("/pages/update", data); return req.data; } export async function deletePage(pageId: string): Promise { await api.post("/pages/delete", { pageId }); } export async function movePage(data: IMovePage): Promise { await api.post("/pages/move", data); } export async function getSidebarPages( params: SidebarPagesParams, ): Promise> { const req = await api.post("/pages/sidebar-pages", params); return req.data; } export async function getPageBreadcrumbs( pageId: string, ): Promise> { const req = await api.post("/pages/breadcrumbs", { pageId }); return req.data; } export async function getRecentChanges( spaceId?: string, ): Promise> { const req = await api.post("/pages/recent", { spaceId }); return req.data; } export async function exportPage(data: IExportPageParams): Promise { const req = await api.post("/pages/export", data, { responseType: "blob", }); const fileName = req?.headers["content-disposition"] .split("filename=")[1] .replace(/"/g, ""); saveAs(req.data, fileName); } export async function importPage(file: File, spaceId: string) { const formData = new FormData(); formData.append("spaceId", spaceId); formData.append("file", file); const req = await api.post("/pages/import", formData, { headers: { "Content-Type": "multipart/form-data", }, }); return req.data; } export async function uploadFile(file: File, pageId: string, attachmentId?: string): Promise { const formData = new FormData(); if(attachmentId){ formData.append("attachmentId", attachmentId); } formData.append("pageId", pageId); formData.append("file", file); const req = await api.post("/files/upload", formData, { headers: { "Content-Type": "multipart/form-data", }, }); return req as unknown as IAttachment; }