diff --git a/web/src/reader/core/reader-navigation.ts b/web/src/reader/core/reader-navigation.ts index 68fa25b..2ee08be 100644 --- a/web/src/reader/core/reader-navigation.ts +++ b/web/src/reader/core/reader-navigation.ts @@ -458,12 +458,35 @@ function sendProgressUpdate() { const state = getState(); if (!state.currentReader || !state.readerMetadata) return; + const mediaItemId = + state.readerMetadata.media_item_id || + document.body.dataset.mediaItemId || + window.location.pathname.split("/").pop(); + + if (!mediaItemId) { + console.warn("No mediaItemId available for progress update"); + return; + } + let currentPage = 0; let totalPages = 0; if (state.currentReader.type === "ebook") { - currentPage = state.currentReader.currentSpineIndex + 1; - totalPages = state.currentReader.cif.spine.length; + // Use dynamic page calculation if available + if (pageCalculationResult) { + const container = document.getElementById("reader-content"); + const viewportHeight = window.innerHeight; + currentPage = getCurrentPageFromScroll( + pageCalculationResult, + state.currentReader.currentSpineIndex, + container?.scrollTop || 0, + viewportHeight, + ); + totalPages = pageCalculationResult.totalPages; + } else { + currentPage = state.currentReader.currentSpineIndex + 1; + totalPages = state.currentReader.cif.spine.length; + } } else if (state.currentReader.type === "pdf") { totalPages = state.readerMetadata.total_pages || 0; currentPage = state.currentReader.currentPage; diff --git a/web/src/reader/core/reader-services.ts b/web/src/reader/core/reader-services.ts index 30c3a12..31e146a 100644 --- a/web/src/reader/core/reader-services.ts +++ b/web/src/reader/core/reader-services.ts @@ -9,11 +9,19 @@ export async function updateReadingProgress( mediaItemId: string, progress: ReadingProgress, ): Promise { + if (!mediaItemId || mediaItemId === "undefined") { + console.warn("Skipping progress update - no valid mediaItemId"); + return; + } const response = await apiPut( `/media-items/${mediaItemId}/progress`, progress, ); - await response.json(); + if (!response.ok) { + const errorText = await response.text(); + console.warn("Progress update failed:", response.status, errorText); + return; + } } export function getChapterNavigation(chapters: any[]) {