mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Some restore code refactoring
This commit is contained in:
		@@ -9,6 +9,7 @@ import android.os.IBinder
 | 
			
		||||
import android.os.PowerManager
 | 
			
		||||
import com.github.salomonbrys.kotson.fromJson
 | 
			
		||||
import com.google.gson.JsonArray
 | 
			
		||||
import com.google.gson.JsonElement
 | 
			
		||||
import com.google.gson.JsonParser
 | 
			
		||||
import com.google.gson.stream.JsonReader
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
@@ -221,45 +222,13 @@ class BackupRestoreService : Service() {
 | 
			
		||||
                errors.clear()
 | 
			
		||||
 | 
			
		||||
                // Restore categories
 | 
			
		||||
                json.get(CATEGORIES)?.let {
 | 
			
		||||
                    backupManager.restoreCategories(it.asJsonArray)
 | 
			
		||||
                    restoreProgress += 1
 | 
			
		||||
                    showRestoreProgress(restoreProgress, restoreAmount, getString(R.string.categories))
 | 
			
		||||
                }
 | 
			
		||||
                restoreCategories(json.get(CATEGORIES))
 | 
			
		||||
 | 
			
		||||
                mangasJson
 | 
			
		||||
            }
 | 
			
		||||
            .flatMap { Observable.from(it) }
 | 
			
		||||
            .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()
 | 
			
		||||
            .doOnNext {
 | 
			
		||||
@@ -287,6 +256,46 @@ class BackupRestoreService : Service() {
 | 
			
		||||
            .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
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user