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 eu.kanade.tachiyomi.source.Source
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.validate
import ir.armor.tachidesk.impl.backup.legacy.models.Backup
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.ChapterImpl
import ir.armor.tachidesk.impl.backup.models.Manga
@ -77,13 +80,16 @@ object LegacyBackupImport : LegacyBackupBase() {
return validationResult
}
private fun restoreCategories(categoriesJson: JsonElement) { // TODO
// db.inTransaction {
// backupManager.restoreCategories(categoriesJson.asJsonArray)
// }
//
// restoreProgress += 1
// showRestoreProgress(restoreProgress, restoreAmount, context.getString(R.string.categories))
private fun restoreCategories(jsonCategories: JsonElement) { // TODO
val backupCategories = parser.fromJson<List<CategoryImpl>>(jsonCategories)
val dbCategories = getCategoryList()
// Iterate over them
backupCategories.forEach { category ->
if (dbCategories.none { it.name == category.name }) {
createCategory(category.name)
}
}
}
private suspend fun restoreManga(mangaJson: JsonObject) {
@ -145,10 +151,11 @@ object LegacyBackupImport : LegacyBackupBase() {
history: List<DHistory>,
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.restoreHistoryForManga(history)
@ -166,6 +173,7 @@ object LegacyBackupImport : LegacyBackupBase() {
* @return Updated manga.
*/
private suspend fun fetchManga(source: Source, manga: Manga): SManga {
// make sure we have the manga record in library
transaction {
if (MangaTable.select { (MangaTable.url eq manga.url) and (MangaTable.sourceReference eq manga.source) }.firstOrNull() == null) {
MangaTable.insert {
@ -180,8 +188,8 @@ object LegacyBackupImport : LegacyBackupBase() {
}
}
// update manga details
val fetchedManga = source.fetchMangaDetails(manga).awaitSingle()
transaction {
MangaTable.update({ (MangaTable.url eq manga.url) and (MangaTable.sourceReference eq manga.source) }) {
@ -197,4 +205,8 @@ object LegacyBackupImport : LegacyBackupBase() {
return fetchedManga
}
private fun updateChapters(source: Source, fetchedManga: SManga, chapters: List<Chapter>) {
// TODO("Not yet implemented")
}
}