Fix migrate extra data like chapter filters and viewer
This commit is contained in:
parent
89d9768759
commit
b1048d8014
@ -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()
|
||||
|
@ -25,7 +25,8 @@ class MangaFavoritePutResolver : PutResolver<Manga>() {
|
||||
.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)
|
||||
}
|
||||
}
|
||||
|
@ -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<Manga>() {
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
@ -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 <--
|
||||
|
Loading…
x
Reference in New Issue
Block a user