diff --git a/web/src/reader/ui/progress-indicator.ts b/web/src/reader/ui/progress-indicator.ts index f964a65..eb51dc2 100644 --- a/web/src/reader/ui/progress-indicator.ts +++ b/web/src/reader/ui/progress-indicator.ts @@ -113,7 +113,7 @@ function updateProgressDisplay(context: ReaderContext): void { let currentChapterPage = 0; let chapterPages = 0; if (state.currentReader.type === "ebook") { - const reader = state.currentReader as any; + const reader = state.currentReader; // Use currentPage directly if available (page-based navigation) if (reader.currentPage) { @@ -123,15 +123,16 @@ function updateProgressDisplay(context: ReaderContext): void { } // Get total pages from calculation result - const pageInfo = reader.pageCalculationResult; + const pageInfo = reader.pagination; if (pageInfo && pageInfo.totalPages > 0) { totalPages = pageInfo.totalPages; - // Get chapter progress - const chapter = pageInfo.chapterMap.get(reader.currentSpineIndex); - if (chapter) { - currentChapterPage = currentPage - chapter.startPage + 1; - chapterPages = chapter.pagesInChapter; + // Get chapter progress from spine info + const spine = pageInfo.spineMap.get(reader.currentSpineIndex); + if (spine && spine.pages.length > 0) { + const chapterStartPage = spine.pages[0].pageIndex; + currentChapterPage = currentPage - chapterStartPage + 1; + chapterPages = spine.pages.length; } } else { // Fallback @@ -145,8 +146,11 @@ function updateProgressDisplay(context: ReaderContext): void { totalPages = state.readerMetadata?.total_pages || 0; } else { // Comic/manga - currentPage = (state.currentReader as any).currentPage + 1; - totalPages = (state.currentReader as any).images?.length || 0; + const reader = state.currentReader; + if (reader.type === "comic" || reader.type === "manga") { + currentPage = reader.currentPage + 1; + totalPages = reader.images?.length || 0; + } } getReadingSpeed().then((speed) => { const result = calculateProgress(