diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt index a747ee194..45d8b660f 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt @@ -12,6 +12,7 @@ import eu.kanade.tachiyomi.data.database.resolvers.MangaFavoritePutResolver import eu.kanade.tachiyomi.data.database.resolvers.MangaFlagsPutResolver import eu.kanade.tachiyomi.data.database.resolvers.MangaInfoPutResolver import eu.kanade.tachiyomi.data.database.resolvers.MangaLastUpdatedPutResolver +import eu.kanade.tachiyomi.data.database.resolvers.MangaMigrationPutResolver import eu.kanade.tachiyomi.data.database.resolvers.MangaTitlePutResolver import eu.kanade.tachiyomi.data.database.resolvers.MangaViewerPutResolver import eu.kanade.tachiyomi.data.database.tables.CategoryTable @@ -87,6 +88,11 @@ interface MangaQueries : DbProvider { .`object`(manga) .withPutResolver(MangaInfoPutResolver(true)) .prepare() + + fun updateMangaMigrate(manga: Manga) = db.put() + .`object`(manga) + .withPutResolver(MangaMigrationPutResolver()) + .prepare() // SY <-- fun insertManga(manga: Manga) = db.put().`object`(manga).prepare() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/MangaFavoritePutResolver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/MangaFavoritePutResolver.kt index 5c948a2c8..e499b6f52 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/MangaFavoritePutResolver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/MangaFavoritePutResolver.kt @@ -25,7 +25,8 @@ class MangaFavoritePutResolver : PutResolver() { .whereArgs(manga.id) .build() - fun mapToContentValues(manga: Manga) = ContentValues(1).apply { + fun mapToContentValues(manga: Manga) = ContentValues(2).apply { put(MangaTable.COL_FAVORITE, manga.favorite) + put(MangaTable.COL_DATE_ADDED, manga.date_added) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/MangaMigrationPutResolver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/MangaMigrationPutResolver.kt new file mode 100644 index 000000000..84e7085cc --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/resolvers/MangaMigrationPutResolver.kt @@ -0,0 +1,35 @@ +package eu.kanade.tachiyomi.data.database.resolvers + +import android.content.ContentValues +import com.pushtorefresh.storio.sqlite.StorIOSQLite +import com.pushtorefresh.storio.sqlite.operations.put.PutResolver +import com.pushtorefresh.storio.sqlite.operations.put.PutResult +import com.pushtorefresh.storio.sqlite.queries.UpdateQuery +import eu.kanade.tachiyomi.data.database.inTransactionReturn +import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.tachiyomi.data.database.tables.MangaTable + +class MangaMigrationPutResolver : PutResolver() { + + override fun performPut(db: StorIOSQLite, manga: Manga) = db.inTransactionReturn { + val updateQuery = mapToUpdateQuery(manga) + val contentValues = mapToContentValues(manga) + + val numberOfRowsUpdated = db.lowLevel().update(updateQuery, contentValues) + PutResult.newUpdateResult(numberOfRowsUpdated, updateQuery.table()) + } + + fun mapToUpdateQuery(manga: Manga) = UpdateQuery.builder() + .table(MangaTable.TABLE) + .where("${MangaTable.COL_ID} = ?") + .whereArgs(manga.id) + .build() + + fun mapToContentValues(manga: Manga) = ContentValues(5).apply { + put(MangaTable.COL_FAVORITE, manga.favorite) + put(MangaTable.COL_DATE_ADDED, manga.date_added) + put(MangaTable.COL_TITLE, manga.title) + put(MangaTable.COL_CHAPTER_FLAGS, manga.chapter_flags) + put(MangaTable.COL_VIEWER, manga.viewer) + } +} 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 f2ea08212..efb33a823 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 @@ -135,17 +135,22 @@ class MigrationProcessAdapter( } db.insertTracks(tracks).executeAsBlocking() } + // Update extras + if (MigrationFlags.hasExtra(flags)) { + manga.viewer = prevManga.viewer + manga.chapter_flags = prevManga.chapter_flags + } // Update favorite status if (replace) { prevManga.favorite = false manga.date_added = prevManga.date_added + prevManga.date_added = 0 db.updateMangaFavorite(prevManga).executeAsBlocking() } else { manga.date_added = Date().time } manga.favorite = true - db.updateMangaFavorite(manga).executeAsBlocking() - db.updateMangaTitle(manga).executeAsBlocking() + db.updateMangaMigrate(manga).executeAsBlocking() } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt index 6825203e3..9fd115cb6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt @@ -102,13 +102,8 @@ class MigrationMangaPresenter( } if (migrateExtra) { - manga.bookmarkedFilter = prevManga.bookmarkedFilter - manga.downloadedFilter = prevManga.downloadedFilter - manga.readFilter = prevManga.readFilter manga.viewer = prevManga.viewer manga.chapter_flags = prevManga.chapter_flags - manga.displayMode = prevManga.displayMode - manga.sorting = prevManga.sorting } // Update favorite status @@ -123,10 +118,7 @@ class MigrationMangaPresenter( // Set extra data manga.favorite = true - db.updateMangaFavorite(manga).executeAsBlocking() - - // SearchPresenter#networkToLocalManga may have updated the manga title, so ensure db gets updated title - db.updateMangaTitle(manga).executeAsBlocking() + db.updateMangaMigrate(manga).executeAsBlocking() } } // SY <--