feat(reader): add reader API integration

- Add getReaderMetadata() to fetch media item metadata
- Add updateReadingProgress() to sync reading progress to backend
- Export ReaderMetadata and ReadingProgress types
- Enable reader to communicate with Go backend
This commit is contained in:
2026-04-04 13:37:56 -04:00
parent e076b0d0b2
commit 6c876c3e19
+48
View File
@@ -88,6 +88,48 @@ function handleError(error: unknown, context: string): void {
showToast(message, "error");
}
// ============================================================
// Reader API Functions
// ============================================================
interface ReaderMetadata {
media_item_id: string;
title: string;
author: string;
cover_image_path: string;
library_type: "ebook" | "comic" | "manga" | "pdf";
mime_type: string;
file_path: string;
chapter_metadata?: ChapterMetadata;
total_pages?: number;
}
interface ChapterMetadata {
chapters: Chapter[];
}
interface Chapter {
id: string;
title: string;
start_page: number;
page_count: number;
}
interface ReadingProgress {
current_page: number;
total_pages: number;
}
async function getReaderMetadata(mediaItemId: string): Promise<ReaderMetadata> {
const response = await apiGet(`/media-items/${mediaItemId}`);
return handleResponse<ReaderMetadata>(response);
}
async function updateReadingProgress(
mediaItemId: string,
progress: ReadingProgress,
): Promise<void> {
const response = await apiPut(
`/media-items/${mediaItemId}/progress`,
progress,
);
await handleVoidResponse(response);
}
export {
apiGet,
apiPost,
@@ -97,6 +139,12 @@ export {
handleResponse,
handleVoidResponse,
handleError,
getReaderMetadata,
updateReadingProgress,
ReaderMetadata,
ReadingProgress,
ChapterMetadata,
Chapter,
};
Alpine.data("api", () => ({