import api from "@/api/client"; import type { Bookmark, CreateBookmarkPayload, Note, CreateNotePayload, UpdateNotePayload, PaginatedResponse, } from "@/types"; /** Fetch bookmarks for the current user, optionally filtered by book */ export async function fetchBookmarks( bookId?: string ): Promise> { const params: Record = {}; if (bookId) params.book = bookId; const { data } = await api.get>( "/annotations/bookmarks/", { params } ); return data; } /** Create a new bookmark */ export async function createBookmark( payload: CreateBookmarkPayload ): Promise { const { data } = await api.post( "/annotations/bookmarks/", payload ); return data; } /** Delete a bookmark by id */ export async function deleteBookmark(id: string): Promise { await api.delete(`/annotations/bookmarks/${id}/`); } /** Batch delete bookmarks */ export async function batchDeleteBookmarks( ids: string[] ): Promise<{ deleted: number }> { const { data } = await api.delete<{ deleted: number }>( "/annotations/bookmarks/batch-delete/", { data: { ids } } ); return data; } /** Fetch notes for the current user, optionally filtered by book */ export async function fetchNotes( bookId?: string ): Promise> { const params: Record = {}; if (bookId) params.book = bookId; const { data } = await api.get>( "/annotations/notes/", { params } ); return data; } /** Create a new note */ export async function createNote(payload: CreateNotePayload): Promise { const { data } = await api.post("/annotations/notes/", payload); return data; } /** Update a note's content */ export async function updateNote( id: string, payload: UpdateNotePayload ): Promise { const { data } = await api.patch( `/annotations/notes/${id}/`, payload ); return data; } /** Delete a note by id */ export async function deleteNote(id: string): Promise { await api.delete(`/annotations/notes/${id}/`); } /** Batch delete notes */ export async function batchDeleteNotes( ids: string[] ): Promise<{ deleted: number }> { const { data } = await api.delete<{ deleted: number }>( "/annotations/notes/batch-delete/", { data: { ids } } ); return data; }