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:
@@ -88,6 +88,48 @@ function handleError(error: unknown, context: string): void {
|
|||||||
showToast(message, "error");
|
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 {
|
export {
|
||||||
apiGet,
|
apiGet,
|
||||||
apiPost,
|
apiPost,
|
||||||
@@ -97,6 +139,12 @@ export {
|
|||||||
handleResponse,
|
handleResponse,
|
||||||
handleVoidResponse,
|
handleVoidResponse,
|
||||||
handleError,
|
handleError,
|
||||||
|
getReaderMetadata,
|
||||||
|
updateReadingProgress,
|
||||||
|
ReaderMetadata,
|
||||||
|
ReadingProgress,
|
||||||
|
ChapterMetadata,
|
||||||
|
Chapter,
|
||||||
};
|
};
|
||||||
|
|
||||||
Alpine.data("api", () => ({
|
Alpine.data("api", () => ({
|
||||||
|
|||||||
Reference in New Issue
Block a user