restore categories

This commit is contained in:
Aria Moradi 2021-04-18 12:40:09 +04:30
parent a1349aa0e3
commit fde137b3ed

View File

@ -7,10 +7,13 @@ import com.google.gson.JsonObject
import com.google.gson.JsonParser import com.google.gson.JsonParser
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import ir.armor.tachidesk.impl.Category.createCategory
import ir.armor.tachidesk.impl.Category.getCategoryList
import ir.armor.tachidesk.impl.backup.legacy.LegacyBackupRestoreValidator.ValidationResult import ir.armor.tachidesk.impl.backup.legacy.LegacyBackupRestoreValidator.ValidationResult
import ir.armor.tachidesk.impl.backup.legacy.LegacyBackupRestoreValidator.validate import ir.armor.tachidesk.impl.backup.legacy.LegacyBackupRestoreValidator.validate
import ir.armor.tachidesk.impl.backup.legacy.models.Backup import ir.armor.tachidesk.impl.backup.legacy.models.Backup
import ir.armor.tachidesk.impl.backup.legacy.models.DHistory import ir.armor.tachidesk.impl.backup.legacy.models.DHistory
import ir.armor.tachidesk.impl.backup.models.CategoryImpl
import ir.armor.tachidesk.impl.backup.models.Chapter import ir.armor.tachidesk.impl.backup.models.Chapter
import ir.armor.tachidesk.impl.backup.models.ChapterImpl import ir.armor.tachidesk.impl.backup.models.ChapterImpl
import ir.armor.tachidesk.impl.backup.models.Manga import ir.armor.tachidesk.impl.backup.models.Manga
@ -62,9 +65,9 @@ object LegacyBackupImport : LegacyBackupBase() {
""" """
Restore Errors: Restore Errors:
${ ${
errors.map { errors.map {
"${it.first} - ${it.second}" "${it.first} - ${it.second}"
}.joinToString("\n") }.joinToString("\n")
} }
Restore Summary: Restore Summary:
- Missing Sources: - Missing Sources:
@ -77,36 +80,39 @@ object LegacyBackupImport : LegacyBackupBase() {
return validationResult return validationResult
} }
private fun restoreCategories(categoriesJson: JsonElement) { // TODO private fun restoreCategories(jsonCategories: JsonElement) { // TODO
// db.inTransaction { val backupCategories = parser.fromJson<List<CategoryImpl>>(jsonCategories)
// backupManager.restoreCategories(categoriesJson.asJsonArray) val dbCategories = getCategoryList()
// }
// // Iterate over them
// restoreProgress += 1 backupCategories.forEach { category ->
// showRestoreProgress(restoreProgress, restoreAmount, context.getString(R.string.categories)) if (dbCategories.none { it.name == category.name }) {
createCategory(category.name)
}
}
} }
private suspend fun restoreManga(mangaJson: JsonObject) { private suspend fun restoreManga(mangaJson: JsonObject) {
val manga = parser.fromJson<MangaImpl>( val manga = parser.fromJson<MangaImpl>(
mangaJson.get( mangaJson.get(
Backup.MANGA Backup.MANGA
) )
) )
val chapters = parser.fromJson<List<ChapterImpl>>( val chapters = parser.fromJson<List<ChapterImpl>>(
mangaJson.get(Backup.CHAPTERS) mangaJson.get(Backup.CHAPTERS)
?: JsonArray() ?: JsonArray()
) )
val categories = parser.fromJson<List<String>>( val categories = parser.fromJson<List<String>>(
mangaJson.get(Backup.CATEGORIES) mangaJson.get(Backup.CATEGORIES)
?: JsonArray() ?: JsonArray()
) )
val history = parser.fromJson<List<DHistory>>( val history = parser.fromJson<List<DHistory>>(
mangaJson.get(Backup.HISTORY) mangaJson.get(Backup.HISTORY)
?: JsonArray() ?: JsonArray()
) )
val tracks = parser.fromJson<List<TrackImpl>>( val tracks = parser.fromJson<List<TrackImpl>>(
mangaJson.get(Backup.TRACK) mangaJson.get(Backup.TRACK)
?: JsonArray() ?: JsonArray()
) )
val source = try { val source = try {
@ -138,17 +144,18 @@ object LegacyBackupImport : LegacyBackupBase() {
* @param tracks tracking data from json * @param tracks tracking data from json
*/ */
private suspend fun restoreMangaData( private suspend fun restoreMangaData(
manga: Manga, manga: Manga,
source: Source, source: Source,
chapters: List<Chapter>, chapters: List<Chapter>,
categories: List<String>, categories: List<String>,
history: List<DHistory>, history: List<DHistory>,
tracks: List<Track> tracks: List<Track>
) { ) {
fetchManga(source, manga) val fetchedManga = fetchManga(source, manga)
// updateChapters(source, fetchedManga, chapters) updateChapters(source, fetchedManga, chapters)
// TODO
// backupManager.restoreCategoriesForManga(manga, categories) // backupManager.restoreCategoriesForManga(manga, categories)
// backupManager.restoreHistoryForManga(history) // backupManager.restoreHistoryForManga(history)
@ -166,6 +173,7 @@ object LegacyBackupImport : LegacyBackupBase() {
* @return Updated manga. * @return Updated manga.
*/ */
private suspend fun fetchManga(source: Source, manga: Manga): SManga { private suspend fun fetchManga(source: Source, manga: Manga): SManga {
// make sure we have the manga record in library
transaction { transaction {
if (MangaTable.select { (MangaTable.url eq manga.url) and (MangaTable.sourceReference eq manga.source) }.firstOrNull() == null) { if (MangaTable.select { (MangaTable.url eq manga.url) and (MangaTable.sourceReference eq manga.source) }.firstOrNull() == null) {
MangaTable.insert { MangaTable.insert {
@ -180,8 +188,8 @@ object LegacyBackupImport : LegacyBackupBase() {
} }
} }
// update manga details
val fetchedManga = source.fetchMangaDetails(manga).awaitSingle() val fetchedManga = source.fetchMangaDetails(manga).awaitSingle()
transaction { transaction {
MangaTable.update({ (MangaTable.url eq manga.url) and (MangaTable.sourceReference eq manga.source) }) { MangaTable.update({ (MangaTable.url eq manga.url) and (MangaTable.sourceReference eq manga.source) }) {
@ -197,4 +205,8 @@ object LegacyBackupImport : LegacyBackupBase() {
return fetchedManga return fetchedManga
} }
private fun updateChapters(source: Source, fetchedManga: SManga, chapters: List<Chapter>) {
// TODO("Not yet implemented")
}
} }