From 983a80ba42424951e81661c6f311f89eca3cbf5b Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Sun, 17 Mar 2024 19:52:38 -0400 Subject: [PATCH] History url is not globally unique --- .../data/backup/restore/restorers/MangaRestorer.kt | 9 +++++---- data/src/main/sqldelight/tachiyomi/data/history.sq | 2 +- 2 files changed, 6 insertions(+), 5 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 0c9ba8524..e62417e4d 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 @@ -313,7 +313,7 @@ class MangaRestorer( restoreCategories(manga, categories, backupCategories) restoreChapters(manga, chapters) restoreTracking(manga, tracks) - restoreHistory(history) + restoreHistory(manga, history) restoreExcludedScanlators(manga, excludedScanlators) updateManga.awaitUpdateFetchInterval(manga, now, currentFetchWindow) // SY --> @@ -359,13 +359,14 @@ class MangaRestorer( } } - private suspend fun restoreHistory(backupHistory: List) { + private suspend fun restoreHistory(manga: Manga, backupHistory: List) { val toUpdate = backupHistory.mapNotNull { history -> - val dbHistory = handler.awaitOneOrNull { historyQueries.getHistoryByChapterUrl(history.url) } + val dbHistory = handler.awaitOneOrNull { historyQueries.getHistoryByChapterUrl(manga.id, history.url) } val item = history.getHistoryImpl() if (dbHistory == null) { - val chapter = handler.awaitOneOrNull { chaptersQueries.getChapterByUrl(history.url) } + val chapter = handler.awaitList { chaptersQueries.getChapterByUrl(history.url) } + .find { it.manga_id == manga.id } return@mapNotNull if (chapter == null) { // Chapter doesn't exist; skip null diff --git a/data/src/main/sqldelight/tachiyomi/data/history.sq b/data/src/main/sqldelight/tachiyomi/data/history.sq index 6ddb06ca7..c35b6b3d9 100644 --- a/data/src/main/sqldelight/tachiyomi/data/history.sq +++ b/data/src/main/sqldelight/tachiyomi/data/history.sq @@ -31,7 +31,7 @@ H.time_read FROM history H JOIN chapters C ON H.chapter_id = C._id -WHERE C.url = :chapterUrl AND C._id = H.chapter_id; +WHERE C.manga_id = :mangaId AND C.url = :chapterUrl AND C._id = H.chapter_id; resetHistoryById: UPDATE history