From a32c7186e43fe616c5956f04c0cef50b450d97c1 Mon Sep 17 00:00:00 2001 From: Luca Auer Date: Tue, 17 Dec 2024 18:26:11 +0100 Subject: [PATCH] Maintain correct source order even when receiving new chapters from a sync service (#1360) * Maintain correct source order even when receiving new chapters from sync service * Add comma required by build service --- .../data/backup/restore/restorers/MangaRestorer.kt | 3 ++- .../eu/kanade/tachiyomi/data/sync/service/SyncService.kt | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt index d5341270e0a4..4b7b4a7d6b1f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt @@ -202,6 +202,7 @@ class MangaRestorer( bookmark = chapter.bookmark || dbChapter.bookmark, read = chapter.read, lastPageRead = chapter.lastPageRead, + sourceOrder = chapter.sourceOrder, ) } else { chapter.copyFrom(dbChapter).let { @@ -252,7 +253,7 @@ class MangaRestorer( bookmark = chapter.bookmark, lastPageRead = chapter.lastPageRead, chapterNumber = null, - sourceOrder = null, + sourceOrder = if (isSync) chapter.sourceOrder else null, dateFetch = null, dateUpload = null, chapterId = chapter.id, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt index 2524fbab1f9e..c16083bfaf03 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt @@ -233,7 +233,12 @@ abstract class SyncService( localChapter != null && remoteChapter != null -> { // Use version number to decide which chapter to keep val chosenChapter = if (localChapter.version >= remoteChapter.version) { - localChapter + // If there mare more chapter on remote, local sourceOrder will need to be updated to maintain correct source order. + if (localChapters.size < remoteChapters.size) { + localChapter.copy(sourceOrder = remoteChapter.sourceOrder) + } else { + localChapter + } } else { remoteChapter } @@ -500,6 +505,7 @@ abstract class SyncService( logcat(LogPriority.DEBUG, logTag) { "Using remote saved search: ${remoteSearch.name}." } remoteSearch } + else -> { logcat(LogPriority.DEBUG, logTag) { "No saved search found for composite key: $compositeKey. Skipping."