|
@@ -9,6 +9,7 @@ import android.os.IBinder
|
|
import android.os.PowerManager
|
|
import android.os.PowerManager
|
|
import com.github.salomonbrys.kotson.fromJson
|
|
import com.github.salomonbrys.kotson.fromJson
|
|
import com.google.gson.JsonArray
|
|
import com.google.gson.JsonArray
|
|
|
|
+import com.google.gson.JsonElement
|
|
import com.google.gson.JsonParser
|
|
import com.google.gson.JsonParser
|
|
import com.google.gson.stream.JsonReader
|
|
import com.google.gson.stream.JsonReader
|
|
import eu.kanade.tachiyomi.R
|
|
import eu.kanade.tachiyomi.R
|
|
@@ -221,45 +222,13 @@ class BackupRestoreService : Service() {
|
|
errors.clear()
|
|
errors.clear()
|
|
|
|
|
|
// Restore categories
|
|
// Restore categories
|
|
- json.get(CATEGORIES)?.let {
|
|
|
|
- backupManager.restoreCategories(it.asJsonArray)
|
|
|
|
- restoreProgress += 1
|
|
|
|
- showRestoreProgress(restoreProgress, restoreAmount, getString(R.string.categories))
|
|
|
|
- }
|
|
|
|
|
|
+ restoreCategories(json.get(CATEGORIES))
|
|
|
|
|
|
mangasJson
|
|
mangasJson
|
|
}
|
|
}
|
|
.flatMap { Observable.from(it) }
|
|
.flatMap { Observable.from(it) }
|
|
.concatMap {
|
|
.concatMap {
|
|
- val obj = it.asJsonObject
|
|
|
|
- val manga = backupManager.parser.fromJson<MangaImpl>(obj.get(MANGA))
|
|
|
|
- val chapters = backupManager.parser.fromJson<List<ChapterImpl>>(
|
|
|
|
- obj.get(CHAPTERS)
|
|
|
|
- ?: JsonArray()
|
|
|
|
- )
|
|
|
|
- val categories = backupManager.parser.fromJson<List<String>>(
|
|
|
|
- obj.get(CATEGORIES)
|
|
|
|
- ?: JsonArray()
|
|
|
|
- )
|
|
|
|
- val history = backupManager.parser.fromJson<List<DHistory>>(
|
|
|
|
- obj.get(HISTORY)
|
|
|
|
- ?: JsonArray()
|
|
|
|
- )
|
|
|
|
- val tracks = backupManager.parser.fromJson<List<TrackImpl>>(
|
|
|
|
- obj.get(TRACK)
|
|
|
|
- ?: JsonArray()
|
|
|
|
- )
|
|
|
|
-
|
|
|
|
- val observable = getMangaRestoreObservable(manga, chapters, categories, history, tracks)
|
|
|
|
- if (observable != null) {
|
|
|
|
- observable
|
|
|
|
- } else {
|
|
|
|
- errors.add(Date() to "${manga.title} - ${getString(R.string.source_not_found)}")
|
|
|
|
- restoreProgress += 1
|
|
|
|
- val content = getString(R.string.dialog_restoring_source_not_found, manga.title.chop(15))
|
|
|
|
- showRestoreProgress(restoreProgress, restoreAmount, manga.title, content)
|
|
|
|
- Observable.just(manga)
|
|
|
|
- }
|
|
|
|
|
|
+ restoreManga(it)
|
|
}
|
|
}
|
|
.toList()
|
|
.toList()
|
|
.doOnNext {
|
|
.doOnNext {
|
|
@@ -287,6 +256,46 @@ class BackupRestoreService : Service() {
|
|
.onErrorReturn { emptyList() }
|
|
.onErrorReturn { emptyList() }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private fun restoreCategories(categoriesJson: JsonElement) {
|
|
|
|
+ backupManager.restoreCategories(categoriesJson.asJsonArray)
|
|
|
|
+ restoreProgress += 1
|
|
|
|
+ showRestoreProgress(restoreProgress, restoreAmount, getString(R.string.categories))
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private fun restoreManga(mangaJson: JsonElement): Observable<out Manga>? {
|
|
|
|
+ val obj = mangaJson.asJsonObject
|
|
|
|
+
|
|
|
|
+ val manga = backupManager.parser.fromJson<MangaImpl>(obj.get(MANGA))
|
|
|
|
+ val chapters = backupManager.parser.fromJson<List<ChapterImpl>>(
|
|
|
|
+ obj.get(CHAPTERS)
|
|
|
|
+ ?: JsonArray()
|
|
|
|
+ )
|
|
|
|
+ val categories = backupManager.parser.fromJson<List<String>>(
|
|
|
|
+ obj.get(CATEGORIES)
|
|
|
|
+ ?: JsonArray()
|
|
|
|
+ )
|
|
|
|
+ val history = backupManager.parser.fromJson<List<DHistory>>(
|
|
|
|
+ obj.get(HISTORY)
|
|
|
|
+ ?: JsonArray()
|
|
|
|
+ )
|
|
|
|
+ val tracks = backupManager.parser.fromJson<List<TrackImpl>>(
|
|
|
|
+ obj.get(TRACK)
|
|
|
|
+ ?: JsonArray()
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ val observable = getMangaRestoreObservable(manga, chapters, categories, history, tracks)
|
|
|
|
+ return if (observable != null) {
|
|
|
|
+ observable
|
|
|
|
+ } else {
|
|
|
|
+ errors.add(Date() to "${manga.title} - ${getString(R.string.source_not_found)}")
|
|
|
|
+ restoreProgress += 1
|
|
|
|
+ val content =
|
|
|
|
+ getString(R.string.dialog_restoring_source_not_found, manga.title.chop(15))
|
|
|
|
+ showRestoreProgress(restoreProgress, restoreAmount, manga.title, content)
|
|
|
|
+ Observable.just(manga)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Write errors to error log
|
|
* Write errors to error log
|
|
*/
|
|
*/
|