Fix crashing when loading a chapter from manual search in migration

This commit is contained in:
Jobobby04 2021-03-31 16:34:31 -04:00
parent 5842765eda
commit 7c4e89cbc5
2 changed files with 28 additions and 15 deletions

View File

@ -10,6 +10,7 @@ import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.list.listItemsMultiChoice import com.afollestad.materialdialogs.list.listItemsMultiChoice
import com.bluelinelabs.conductor.Controller import com.bluelinelabs.conductor.Controller
import eu.kanade.tachiyomi.R 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.database.models.Manga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
@ -33,12 +34,30 @@ import uy.kohesive.injekt.injectLazy
class SearchController( class SearchController(
private var manga: Manga? = null, private var manga: Manga? = null,
private var sources: List<CatalogueSource>? = null private var sources: List<CatalogueSource>? = 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 newManga: Manga? = null
private var progress = 1 private var progress = 1
var totalProgress = 0 var totalProgress = 0
constructor(mangaId: Long, sources: LongArray):
this(
Injekt.get<DatabaseHelper>().getManga(mangaId).executeAsBlocking(),
sources.map { Injekt.get<SourceManager>().getOrStub(it) }.filterIsInstance<CatalogueSource>()
)
@Suppress("unused")
constructor(bundle: Bundle): this(
bundle.getLong(OLD_MANGA),
bundle.getLongArray(SOURCES) ?: LongArray(0)
)
/** /**
* Called when controller is initialized. * 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) { fun migrateManga(manga: Manga, newManga: Manga) {
val target = targetController as? MigrationInterface ?: return val target = targetController as? MigrationInterface ?: return
@ -218,4 +225,9 @@ class SearchController(
router.pushController(SourceSearchController(manga!!, source, presenter.query).withFadeTransaction()) router.pushController(SourceSearchController(manga!!, source, presenter.query).withFadeTransaction())
} }
companion object {
const val OLD_MANGA = "old_manga"
const val SOURCES = "sources"
}
} }

View File

@ -23,8 +23,9 @@ import uy.kohesive.injekt.injectLazy
*/ */
open class GlobalSearchController( open class GlobalSearchController(
protected val initialQuery: String? = null, protected val initialQuery: String? = null,
protected val extensionFilter: String? = null protected val extensionFilter: String? = null,
) : SearchableNucleusController<GlobalSearchControllerBinding, GlobalSearchPresenter>(), bundle: Bundle? = null
) : SearchableNucleusController<GlobalSearchControllerBinding, GlobalSearchPresenter>(bundle),
GlobalSearchCardAdapter.OnMangaClickListener, GlobalSearchCardAdapter.OnMangaClickListener,
GlobalSearchAdapter.OnTitleClickListener { GlobalSearchAdapter.OnTitleClickListener {