|
@@ -13,7 +13,6 @@ 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.source.Source
|
|
|
-import eu.kanade.tachiyomi.util.lang.launchIO
|
|
|
import okio.buffer
|
|
|
import okio.gzip
|
|
|
import okio.source
|
|
@@ -21,7 +20,7 @@ import java.util.Date
|
|
|
|
|
|
class FullBackupRestore(context: Context, notifier: BackupNotifier, private val online: Boolean) : AbstractBackupRestore<FullBackupManager>(context, notifier) {
|
|
|
|
|
|
- override fun performRestore(uri: Uri): Boolean {
|
|
|
+ override suspend fun performRestore(uri: Uri): Boolean {
|
|
|
backupManager = FullBackupManager(context)
|
|
|
|
|
|
val backupString = context.contentResolver.openInputStream(uri)!!.source().gzip().buffer().use { it.readByteArray() }
|
|
@@ -58,7 +57,7 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier, private val
|
|
|
showRestoreProgress(restoreProgress, restoreAmount, context.getString(R.string.categories))
|
|
|
}
|
|
|
|
|
|
- private fun restoreManga(backupManga: BackupManga, backupCategories: List<BackupCategory>, online: Boolean) {
|
|
|
+ private suspend fun restoreManga(backupManga: BackupManga, backupCategories: List<BackupCategory>, online: Boolean) {
|
|
|
val manga = backupManga.getMangaImpl()
|
|
|
val chapters = backupManga.getChaptersImpl()
|
|
|
val categories = backupManga.categories
|
|
@@ -92,7 +91,7 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier, private val
|
|
|
* @param history history data from json
|
|
|
* @param tracks tracking data from json
|
|
|
*/
|
|
|
- private fun restoreMangaData(
|
|
|
+ private suspend fun restoreMangaData(
|
|
|
manga: Manga,
|
|
|
source: Source?,
|
|
|
chapters: List<Chapter>,
|
|
@@ -124,7 +123,7 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier, private val
|
|
|
* @param chapters chapters of manga that needs updating
|
|
|
* @param categories categories that need updating
|
|
|
*/
|
|
|
- private fun restoreMangaFetch(
|
|
|
+ private suspend fun restoreMangaFetch(
|
|
|
source: Source?,
|
|
|
manga: Manga,
|
|
|
chapters: List<Chapter>,
|
|
@@ -134,27 +133,25 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier, private val
|
|
|
backupCategories: List<BackupCategory>,
|
|
|
online: Boolean
|
|
|
) {
|
|
|
- launchIO {
|
|
|
- try {
|
|
|
- val fetchedManga = backupManager.restoreMangaFetch(source, manga, online)
|
|
|
- fetchedManga.id ?: (return@launchIO)
|
|
|
-
|
|
|
- if (online && source != null) {
|
|
|
- updateChapters(source, fetchedManga, chapters)
|
|
|
- } else {
|
|
|
- backupManager.restoreChaptersForMangaOffline(fetchedManga, chapters)
|
|
|
- }
|
|
|
-
|
|
|
- restoreExtraForManga(fetchedManga, categories, history, tracks, backupCategories)
|
|
|
-
|
|
|
- updateTracking(fetchedManga, tracks)
|
|
|
- } catch (e: Exception) {
|
|
|
- errors.add(Date() to "${manga.title} - ${e.message}")
|
|
|
+ try {
|
|
|
+ val fetchedManga = backupManager.restoreMangaFetch(source, manga, online)
|
|
|
+ fetchedManga.id ?: return
|
|
|
+
|
|
|
+ if (online && source != null) {
|
|
|
+ updateChapters(source, fetchedManga, chapters)
|
|
|
+ } else {
|
|
|
+ backupManager.restoreChaptersForMangaOffline(fetchedManga, chapters)
|
|
|
}
|
|
|
+
|
|
|
+ restoreExtraForManga(fetchedManga, categories, history, tracks, backupCategories)
|
|
|
+
|
|
|
+ updateTracking(fetchedManga, tracks)
|
|
|
+ } catch (e: Exception) {
|
|
|
+ errors.add(Date() to "${manga.title} - ${e.message}")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private fun restoreMangaNoFetch(
|
|
|
+ private suspend fun restoreMangaNoFetch(
|
|
|
source: Source?,
|
|
|
backupManga: Manga,
|
|
|
chapters: List<Chapter>,
|
|
@@ -164,19 +161,17 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier, private val
|
|
|
backupCategories: List<BackupCategory>,
|
|
|
online: Boolean
|
|
|
) {
|
|
|
- launchIO {
|
|
|
- if (online && source != null) {
|
|
|
- if (!backupManager.restoreChaptersForManga(backupManga, chapters)) {
|
|
|
- updateChapters(source, backupManga, chapters)
|
|
|
- }
|
|
|
- } else {
|
|
|
- backupManager.restoreChaptersForMangaOffline(backupManga, chapters)
|
|
|
+ if (online && source != null) {
|
|
|
+ if (!backupManager.restoreChaptersForManga(backupManga, chapters)) {
|
|
|
+ updateChapters(source, backupManga, chapters)
|
|
|
}
|
|
|
+ } else {
|
|
|
+ backupManager.restoreChaptersForMangaOffline(backupManga, chapters)
|
|
|
+ }
|
|
|
|
|
|
- restoreExtraForManga(backupManga, categories, history, tracks, backupCategories)
|
|
|
+ restoreExtraForManga(backupManga, categories, history, tracks, backupCategories)
|
|
|
|
|
|
- updateTracking(backupManga, tracks)
|
|
|
- }
|
|
|
+ updateTracking(backupManga, tracks)
|
|
|
}
|
|
|
|
|
|
private fun restoreExtraForManga(manga: Manga, categories: List<Int>, history: List<BackupHistory>, tracks: List<Track>, backupCategories: List<BackupCategory>) {
|