From 46d9c024da96f6cfdf25814bf695686f3bef440a Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Tue, 28 Jul 2020 23:38:36 -0400 Subject: [PATCH] Recommendations crash fix --- .../source/browse/BrowseSourceController.kt | 17 ++++++-------- .../source/browse/BrowseSourcePresenter.kt | 23 ++++++++++++------- .../tachiyomi/ui/manga/MangaController.kt | 2 +- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt index 01351004b..4461d6d1b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt @@ -149,7 +149,7 @@ open class BrowseSourceController(bundle: Bundle) : // SY --> return when (mode) { Mode.CATALOGUE -> presenter.source.name - Mode.RECOMMENDS -> recommendsConfig!!.manga.originalTitle + Mode.RECOMMENDS -> recommendsConfig!!.title } // SY <-- } @@ -159,8 +159,7 @@ open class BrowseSourceController(bundle: Bundle) : return BrowseSourcePresenter( args.getLong(SOURCE_ID_KEY), args.getString(SEARCH_QUERY_KEY), - searchManga = if (mode == Mode.RECOMMENDS) recommendsConfig?.manga else null, - recommends = (mode == Mode.RECOMMENDS) + recommendsMangaId = if (mode == Mode.RECOMMENDS) recommendsConfig?.mangaId else null ) // SY <-- } @@ -402,12 +401,6 @@ open class BrowseSourceController(bundle: Bundle) : override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.source_browse, menu) - // SY --> - if (mode == Mode.RECOMMENDS) { - menu.findItem(R.id.action_search).isVisible = false - } - // SY <-- - // Initialize search menu val searchItem = menu.findItem(R.id.action_search) val searchView = searchItem.actionView as SearchView @@ -441,6 +434,10 @@ open class BrowseSourceController(bundle: Bundle) : } menu.findItem(displayItem).isChecked = true // SY --> + if (mode == Mode.RECOMMENDS) { + menu.findItem(R.id.action_search).isVisible = false + } + if (preferences.enhancedEHentaiView().get() && presenter.source.isEhBasedSource()) { menu.findItem(R.id.action_display_mode).isVisible = false } @@ -833,7 +830,7 @@ open class BrowseSourceController(bundle: Bundle) : // SY --> @Parcelize - data class RecommendsConfig(val manga: Manga) : Parcelable + data class RecommendsConfig(val title: String, val mangaId: Long?) : Parcelable enum class Mode { CATALOGUE, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt index 4d26e794b..c943299df 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt @@ -57,14 +57,13 @@ import xyz.nulldev.ts.api.http.serializer.FilterSerializer open class BrowseSourcePresenter( private val sourceId: Long, private val searchQuery: String? = null, - private val searchManga: Manga? = null, + // SY --> + private val recommendsMangaId: Long? = null, + // SY <-- private val sourceManager: SourceManager = Injekt.get(), private val db: DatabaseHelper = Injekt.get(), private val prefs: PreferencesHelper = Injekt.get(), - private val coverCache: CoverCache = Injekt.get(), - // SY --> - private val recommends: Boolean = false - // SY <-- + private val coverCache: CoverCache = Injekt.get() ) : BasePresenter() { /** @@ -75,7 +74,7 @@ open class BrowseSourcePresenter( /** * Query from the view. */ - var query = /* SY --> */ if (recommends) "" else /* SY <-- */ searchQuery ?: "" + var query = searchQuery ?: "" private set /** @@ -114,6 +113,10 @@ open class BrowseSourcePresenter( */ private var pageSubscription: Subscription? = null + // SY --> + private var manga: Manga? = null + // SY <-- + /** * Subscription to initialize manga details. */ @@ -130,6 +133,10 @@ open class BrowseSourcePresenter( query = savedState.getString(::query.name, "") } + if (recommendsMangaId != null) { + manga = db.getManga(recommendsMangaId).executeAsBlocking() + } + restartPager() } @@ -152,8 +159,8 @@ open class BrowseSourcePresenter( // Create a new pager. // SY --> - pager = if (recommends && searchManga != null) RecommendsPager( - searchManga + pager = if (recommendsMangaId != null && manga != null) RecommendsPager( + manga ?: throw Exception("Could not get Manga") ) else createPager(query, filters) // SY <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt index 19a68966e..b04348f6b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt @@ -621,7 +621,7 @@ class MangaController : // AZ --> fun openRecommends() { - val recommendsConfig = BrowseSourceController.RecommendsConfig(presenter.manga) + val recommendsConfig = BrowseSourceController.RecommendsConfig(presenter.manga.originalTitle, presenter.manga.id) router?.pushController( BrowseSourceController(