fix: re-read sync back if page is not changed

This commit is contained in:
RandomNamer 2024-07-22 11:27:45 -04:00
parent acfb2765c7
commit ca4159a1ed
2 changed files with 3 additions and 2 deletions

View File

@ -106,7 +106,7 @@ class SyncChapterProgressWithTrack(
.let { tracker.batchGetChapterProgress(it) } .let { tracker.batchGetChapterProgress(it) }
.entries.groupBy { resolveRemoteProgress(it.key, it.value) } .entries.groupBy { resolveRemoteProgress(it.key, it.value) }
val updatesToLocal = remoteUpdatesMapping[RemoteProgressResolution.ACCEPT]?.mapNotNull { (chapter, remote) -> val updatesToLocal = remoteUpdatesMapping[RemoteProgressResolution.ACCEPT]?.mapNotNull { (chapter, remote) ->
if (remote.page > 1 && chapter.last_page_read != remote.page - 1 ) if (remote.page > 1 && (chapter.last_page_read != remote.page - 1 || chapter.read != remote.completed) )
//In komga page starts from 1 //In komga page starts from 1
chapter.toDomainChapter()?.copy(lastPageRead = remote.page.toLong() - 1, read = remote.completed)?.toChapterUpdate() chapter.toDomainChapter()?.copy(lastPageRead = remote.page.toLong() - 1, read = remote.completed)?.toChapterUpdate()
else null else null

View File

@ -20,6 +20,7 @@ class PageTrackerTest {
createTestChapterEntry(7, false, 0, false, 0), createTestChapterEntry(7, false, 0, false, 0),
createTestChapterEntry(8, true, 100, false, 0), //local read, remote has not started reread createTestChapterEntry(8, true, 100, false, 0), //local read, remote has not started reread
createTestChapterEntry(9, false, 0, false, -1), createTestChapterEntry(9, false, 0, false, -1),
createTestChapterEntry(10, true, 3, false, 5), //local read, but has reread history; remote reread
) )
} }
@ -28,7 +29,7 @@ class PageTrackerTest {
private fun PageTracker.ChapterReadProgress.compareWith(b: PageTracker.ChapterReadProgress): String { private fun PageTracker.ChapterReadProgress.compareWith(b: PageTracker.ChapterReadProgress): String {
return StringBuilder("Update(").apply { return StringBuilder("Update(").apply {
if (completed != b.completed) append("completed ${b.completed} -> $completed; ") if (completed != b.completed) append("completed: ${b.completed} -> $completed; ")
if (page != b.page) append("page: ${b.page} -> $page") if (page != b.page) append("page: ${b.page} -> $page")
append(")") append(")")
}.toString() }.toString()