From 7c4e89cbc5a6954847bc8cf4f4e8601bd3b912ff Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Wed, 31 Mar 2021 16:34:31 -0400 Subject: [PATCH] Fix crashing when loading a chapter from manual search in migration --- .../migration/search/SearchController.kt | 38 ++++++++++++------- .../globalsearch/GlobalSearchController.kt | 5 ++- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt index 180de038b..ec132b363 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt @@ -10,6 +10,7 @@ import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.listItemsMultiChoice import com.bluelinelabs.conductor.Controller import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.CatalogueSource @@ -33,12 +34,30 @@ import uy.kohesive.injekt.injectLazy class SearchController( private var manga: Manga? = null, private var sources: List? = null -) : GlobalSearchController(manga?.originalTitle) { +) : GlobalSearchController( + manga?.originalTitle, + bundle = bundleOf( + OLD_MANGA to manga?.id, + SOURCES to sources?.map { it.id }?.toLongArray() + ) +) { private var newManga: Manga? = null private var progress = 1 var totalProgress = 0 + constructor(mangaId: Long, sources: LongArray): + this( + Injekt.get().getManga(mangaId).executeAsBlocking(), + sources.map { Injekt.get().getOrStub(it) }.filterIsInstance() + ) + + @Suppress("unused") + constructor(bundle: Bundle): this( + bundle.getLong(OLD_MANGA), + bundle.getLongArray(SOURCES) ?: LongArray(0) + ) + /** * Called when controller is initialized. */ @@ -62,18 +81,6 @@ class SearchController( ) } - override fun onSaveInstanceState(outState: Bundle) { - outState.putSerializable(::manga.name, manga) - outState.putSerializable(::newManga.name, newManga) - super.onSaveInstanceState(outState) - } - - override fun onRestoreInstanceState(savedInstanceState: Bundle) { - super.onRestoreInstanceState(savedInstanceState) - manga = savedInstanceState.getSerializable(::manga.name) as? Manga - newManga = savedInstanceState.getSerializable(::newManga.name) as? Manga - } - fun migrateManga(manga: Manga, newManga: Manga) { val target = targetController as? MigrationInterface ?: return @@ -218,4 +225,9 @@ class SearchController( router.pushController(SourceSearchController(manga!!, source, presenter.query).withFadeTransaction()) } + + companion object { + const val OLD_MANGA = "old_manga" + const val SOURCES = "sources" + } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt index e36e4d75c..c3a42051c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt @@ -23,8 +23,9 @@ import uy.kohesive.injekt.injectLazy */ open class GlobalSearchController( protected val initialQuery: String? = null, - protected val extensionFilter: String? = null -) : SearchableNucleusController(), + protected val extensionFilter: String? = null, + bundle: Bundle? = null +) : SearchableNucleusController(bundle), GlobalSearchCardAdapter.OnMangaClickListener, GlobalSearchAdapter.OnTitleClickListener {