From 5c1423be8685ba667c39835d8ca2626ff5f0fe0e Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Wed, 14 Apr 2021 02:38:37 -0400 Subject: [PATCH] Migrating manga now also saves more chapter info Bookmarks, Last Read, Date fetched, and has been read fully (this was already tracked but previously it only took the highest chapters Closes #151 (cherry picked from commit ee4f3e6586910c8c4d62859c867c2a40e41eef67) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt --- .../process/MigrationProcessAdapter.kt | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt index e491ffc1c..59254d959 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.browse.migration.advanced.process import android.view.MenuItem import eu.davidea.flexibleadapter.FlexibleAdapter import eu.kanade.tachiyomi.data.database.DatabaseHelper +import eu.kanade.tachiyomi.data.database.models.History import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.MangaCategory import eu.kanade.tachiyomi.data.preference.PreferencesHelper @@ -102,16 +103,30 @@ class MigrationProcessAdapter( // Update chapters read if (MigrationFlags.hasChapters(flags)) { val prevMangaChapters = db.getChapters(prevManga).executeAsBlocking() - val maxChapterRead = prevMangaChapters.filter { it.read }.maxByOrNull { it.chapter_number }?.chapter_number - if (maxChapterRead != null) { - val dbChapters = db.getChapters(manga).executeAsBlocking() - for (chapter in dbChapters) { - if (chapter.isRecognizedNumber && chapter.chapter_number <= maxChapterRead) { + val maxChapterRead = + prevMangaChapters.filter { it.read }.maxOf { it.chapter_number } + val dbChapters = db.getChapters(manga).executeAsBlocking() + val prevHistoryList = db.getHistoryByMangaId(prevManga.id!!).executeAsBlocking() + val historyList = mutableListOf() + for (chapter in dbChapters) { + if (chapter.isRecognizedNumber) { + val prevChapter = + prevMangaChapters.find { it.isRecognizedNumber && it.chapter_number == chapter.chapter_number } + if (prevChapter != null) { + chapter.bookmark = prevChapter.bookmark + chapter.read = prevChapter.read + chapter.date_fetch = prevChapter.date_fetch + prevHistoryList.find { it.chapter_id == prevChapter.id }?.let { prevHistory -> + val history = History.create(chapter).apply { last_read = prevHistory.last_read } + historyList.add(history) + } + } else if (chapter.chapter_number <= maxChapterRead) { chapter.read = true } } - db.insertChapters(dbChapters).executeAsBlocking() } + db.insertChapters(dbChapters).executeAsBlocking() + db.updateHistoryLastRead(historyList).executeAsBlocking() } // Update categories if (MigrationFlags.hasCategories(flags)) {