From d763aa5f153abb5c6e31a388a66201cf871ebe3f Mon Sep 17 00:00:00 2001 From: Gigi Date: Thu, 16 Oct 2025 09:20:24 +0200 Subject: [PATCH] fix: merge reading progress even when timestamp is older than bookmark --- src/utils/readItemMerge.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/utils/readItemMerge.ts b/src/utils/readItemMerge.ts index 4e849e62..c9afa587 100644 --- a/src/utils/readItemMerge.ts +++ b/src/utils/readItemMerge.ts @@ -15,11 +15,17 @@ export function mergeReadItem( return true } + // Always merge if incoming has reading progress data + const hasNewProgress = incoming.readingProgress !== undefined && + (existing.readingProgress === undefined || existing.readingProgress !== incoming.readingProgress) + + const hasNewMarkedAsRead = incoming.markedAsRead !== undefined && existing.markedAsRead === undefined + // Merge by taking the most recent reading activity const existingTime = existing.readingTimestamp || existing.markedAt || 0 const incomingTime = incoming.readingTimestamp || incoming.markedAt || 0 - if (incomingTime > existingTime) { + if (incomingTime > existingTime || hasNewProgress || hasNewMarkedAsRead) { // Keep existing data, but update with newer reading metadata stateMap.set(incoming.id, { ...existing, @@ -30,7 +36,10 @@ export function mergeReadItem( summary: incoming.summary || existing.summary, image: incoming.image || existing.image, published: incoming.published || existing.published, - author: incoming.author || existing.author + author: incoming.author || existing.author, + // Always take reading progress if available + readingProgress: incoming.readingProgress !== undefined ? incoming.readingProgress : existing.readingProgress, + readingTimestamp: incomingTime > existingTime ? incoming.readingTimestamp : existing.readingTimestamp }) return true }