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 -->
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,

View File

@ -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<BrowseSourceController>() {
/**
@ -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 <--

View File

@ -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(