Recommendations crash fix

This commit is contained in:
Jobobby04 2020-07-28 23:38:36 -04:00
parent 2c49466a42
commit 46d9c024da
3 changed files with 23 additions and 19 deletions

View File

@ -149,7 +149,7 @@ open class BrowseSourceController(bundle: Bundle) :
// SY --> // SY -->
return when (mode) { return when (mode) {
Mode.CATALOGUE -> presenter.source.name Mode.CATALOGUE -> presenter.source.name
Mode.RECOMMENDS -> recommendsConfig!!.manga.originalTitle Mode.RECOMMENDS -> recommendsConfig!!.title
} }
// SY <-- // SY <--
} }
@ -159,8 +159,7 @@ open class BrowseSourceController(bundle: Bundle) :
return BrowseSourcePresenter( return BrowseSourcePresenter(
args.getLong(SOURCE_ID_KEY), args.getLong(SOURCE_ID_KEY),
args.getString(SEARCH_QUERY_KEY), args.getString(SEARCH_QUERY_KEY),
searchManga = if (mode == Mode.RECOMMENDS) recommendsConfig?.manga else null, recommendsMangaId = if (mode == Mode.RECOMMENDS) recommendsConfig?.mangaId else null
recommends = (mode == Mode.RECOMMENDS)
) )
// SY <-- // SY <--
} }
@ -402,12 +401,6 @@ open class BrowseSourceController(bundle: Bundle) :
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.source_browse, menu) inflater.inflate(R.menu.source_browse, menu)
// SY -->
if (mode == Mode.RECOMMENDS) {
menu.findItem(R.id.action_search).isVisible = false
}
// SY <--
// Initialize search menu // Initialize search menu
val searchItem = menu.findItem(R.id.action_search) val searchItem = menu.findItem(R.id.action_search)
val searchView = searchItem.actionView as SearchView val searchView = searchItem.actionView as SearchView
@ -441,6 +434,10 @@ open class BrowseSourceController(bundle: Bundle) :
} }
menu.findItem(displayItem).isChecked = true menu.findItem(displayItem).isChecked = true
// SY --> // SY -->
if (mode == Mode.RECOMMENDS) {
menu.findItem(R.id.action_search).isVisible = false
}
if (preferences.enhancedEHentaiView().get() && presenter.source.isEhBasedSource()) { if (preferences.enhancedEHentaiView().get() && presenter.source.isEhBasedSource()) {
menu.findItem(R.id.action_display_mode).isVisible = false menu.findItem(R.id.action_display_mode).isVisible = false
} }
@ -833,7 +830,7 @@ open class BrowseSourceController(bundle: Bundle) :
// SY --> // SY -->
@Parcelize @Parcelize
data class RecommendsConfig(val manga: Manga) : Parcelable data class RecommendsConfig(val title: String, val mangaId: Long?) : Parcelable
enum class Mode { enum class Mode {
CATALOGUE, CATALOGUE,

View File

@ -57,14 +57,13 @@ import xyz.nulldev.ts.api.http.serializer.FilterSerializer
open class BrowseSourcePresenter( open class BrowseSourcePresenter(
private val sourceId: Long, private val sourceId: Long,
private val searchQuery: String? = null, 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 sourceManager: SourceManager = Injekt.get(),
private val db: DatabaseHelper = Injekt.get(), private val db: DatabaseHelper = Injekt.get(),
private val prefs: PreferencesHelper = Injekt.get(), private val prefs: PreferencesHelper = Injekt.get(),
private val coverCache: CoverCache = Injekt.get(), private val coverCache: CoverCache = Injekt.get()
// SY -->
private val recommends: Boolean = false
// SY <--
) : BasePresenter<BrowseSourceController>() { ) : BasePresenter<BrowseSourceController>() {
/** /**
@ -75,7 +74,7 @@ open class BrowseSourcePresenter(
/** /**
* Query from the view. * Query from the view.
*/ */
var query = /* SY --> */ if (recommends) "" else /* SY <-- */ searchQuery ?: "" var query = searchQuery ?: ""
private set private set
/** /**
@ -114,6 +113,10 @@ open class BrowseSourcePresenter(
*/ */
private var pageSubscription: Subscription? = null private var pageSubscription: Subscription? = null
// SY -->
private var manga: Manga? = null
// SY <--
/** /**
* Subscription to initialize manga details. * Subscription to initialize manga details.
*/ */
@ -130,6 +133,10 @@ open class BrowseSourcePresenter(
query = savedState.getString(::query.name, "") query = savedState.getString(::query.name, "")
} }
if (recommendsMangaId != null) {
manga = db.getManga(recommendsMangaId).executeAsBlocking()
}
restartPager() restartPager()
} }
@ -152,8 +159,8 @@ open class BrowseSourcePresenter(
// Create a new pager. // Create a new pager.
// SY --> // SY -->
pager = if (recommends && searchManga != null) RecommendsPager( pager = if (recommendsMangaId != null && manga != null) RecommendsPager(
searchManga manga ?: throw Exception("Could not get Manga")
) else createPager(query, filters) ) else createPager(query, filters)
// SY <-- // SY <--

View File

@ -621,7 +621,7 @@ class MangaController :
// AZ --> // AZ -->
fun openRecommends() { fun openRecommends() {
val recommendsConfig = BrowseSourceController.RecommendsConfig(presenter.manga) val recommendsConfig = BrowseSourceController.RecommendsConfig(presenter.manga.originalTitle, presenter.manga.id)
router?.pushController( router?.pushController(
BrowseSourceController( BrowseSourceController(