From 49833fcc484e06e544a7acf43bd65baecc86fdcf Mon Sep 17 00:00:00 2001 From: NerdNumber9 Date: Sun, 14 Apr 2019 11:17:21 -0400 Subject: [PATCH] Migrate HentaiCafe IDs and nhentai URLs in backups --- .../data/backup/BackupRestoreService.kt | 18 ++++++++++- app/src/main/java/exh/EXHMigrations.kt | 32 +++++++++++++++++-- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt index 8ee9ab60d..6cf397d1a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt @@ -27,6 +27,8 @@ import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.util.chop import eu.kanade.tachiyomi.util.isServiceRunning import eu.kanade.tachiyomi.util.sendLocalBroadcast +import exh.BackupEntry +import exh.EXHMigrations import rx.Observable import rx.Subscription import rx.schedulers.Schedulers @@ -223,7 +225,21 @@ class BackupRestoreService : Service() { val history = backupManager.parser.fromJson>(obj.get(HISTORY) ?: JsonArray()) val tracks = backupManager.parser.fromJson>(obj.get(TRACK) ?: JsonArray()) - val observable = getMangaRestoreObservable(manga, chapters, categories, history, tracks) + // EXH --> + val migrated = EXHMigrations.migrateBackupEntry( + BackupEntry( + manga, + chapters, + categories, + history, + tracks + ) + ) + + val observable = migrated.flatMap { (manga, chapters, categories, history, tracks) -> + getMangaRestoreObservable(manga, chapters, categories, history, tracks) + } + // EXH <-- if (observable != null) { observable } else { diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt index c4ef66a46..8f4c3fdbf 100644 --- a/app/src/main/java/exh/EXHMigrations.kt +++ b/app/src/main/java/exh/EXHMigrations.kt @@ -2,12 +2,16 @@ package exh import com.pushtorefresh.storio.sqlite.queries.Query import com.pushtorefresh.storio.sqlite.queries.RawQuery +import eu.kanade.tachiyomi.data.backup.models.DHistory import eu.kanade.tachiyomi.data.database.DatabaseHelper +import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.database.resolvers.MangaUrlPutResolver import eu.kanade.tachiyomi.data.database.tables.MangaTable import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.getOrDefault +import rx.Observable import uy.kohesive.injekt.injectLazy import java.net.URI import java.net.URISyntaxException @@ -35,7 +39,7 @@ object EXHMigrations { db.lowLevel().executeSQL(RawQuery.builder() .query(""" UPDATE ${MangaTable.TABLE} - SET ${MangaTable.COL_SOURCE} = 260868874183818481 + SET ${MangaTable.COL_SOURCE} = $HENTAI_CAFE_SOURCE_ID WHERE ${MangaTable.COL_SOURCE} = 6908 """.trimIndent()) .affectsTables(MangaTable.TABLE) @@ -69,6 +73,22 @@ object EXHMigrations { return false } + fun migrateBackupEntry(backupEntry: BackupEntry): Observable { + val (manga, chapters, categories, history, tracks) = backupEntry + + // Migrate HentaiCafe source IDs + if(manga.source == 6908L) { + manga.source = HENTAI_CAFE_SOURCE_ID + } + + // Migrate nhentai URLs + if(manga.source == NHENTAI_SOURCE_ID) { + manga.url = getUrlWithoutDomain(manga.url) + } + + return Observable.just(backupEntry) + } + private fun getUrlWithoutDomain(orig: String): String { return try { val uri = URI(orig) @@ -82,4 +102,12 @@ object EXHMigrations { orig } } -} \ No newline at end of file +} + +data class BackupEntry( + val manga: Manga, + val chapters: List, + val categories: List, + val history: List, + val tracks: List +) \ No newline at end of file