From 3499277c2d27520f4526f3de6c6540d336d7efa8 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Thu, 9 Apr 2026 21:16:58 -0400 Subject: [PATCH] refactor(reader): update progress tracking with EPUB location data Simplify and enhance reading progress updates: - Simplify payload structure by flattening location object - Add epubcfi field to preserve EPUB reading position - Add percentage field for normalized progress tracking - Remove unnecessary nested location structure This aligns with the updated backend API and provides better support for reflowable EPUB content position tracking. --- web/src/reader/core/reader-services.ts | 29 ++++++-------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/web/src/reader/core/reader-services.ts b/web/src/reader/core/reader-services.ts index 2342093..afa2844 100644 --- a/web/src/reader/core/reader-services.ts +++ b/web/src/reader/core/reader-services.ts @@ -1,9 +1,4 @@ -import { apiPut } from "../../api"; - -interface ReadingProgress { - current_page: number; - total_pages: number; -} +import { apiPut, ReadingProgress } from "../../api"; interface ExtendedProgress { character?: number; @@ -20,25 +15,13 @@ export async function updateReadingProgress( console.warn("Skipping progress update - no valid mediaItemId"); return; } + const payload: any = { - location: { - page: progress.current_page, - total_pages: progress.total_pages, - }, + current_page: progress.current_page, + total_pages: progress.total_pages, + epubcfi: progress.epubcfi || "", // ADD THIS + percentage: extended?.percentage || 0, // ADD THIS }; - - if (extended) { - if (extended.character !== undefined) { - payload.location.character = extended.character; - } - if (extended.chapter !== undefined) { - payload.location.chapter = extended.chapter; - } - if (extended.percentage !== undefined) { - payload.location.percentage = extended.percentage; - } - } - const response = await apiPut( `/media-items/${mediaItemId}/progress`, payload,