finish off recommendations

(cherry picked from commit 6473bcd32242abf8ba50b3ac76562ae6b931d0cd)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt
This commit is contained in:
Rani Sargees 2020-05-08 00:11:03 -04:00 committed by Jobobby04
parent 4c5e99142f
commit f0b821b122
5 changed files with 45 additions and 23 deletions

View File

@ -284,7 +284,7 @@ class SourceController(bundle: Bundle? = null) :
} }
@Parcelize @Parcelize
data class SmartSearchConfig(val origTitle: String, val origMangaId: Long) : Parcelable data class SmartSearchConfig(val origTitle: String, val origMangaId: Long? = null) : Parcelable
enum class Mode { enum class Mode {
CATALOGUE, CATALOGUE,

View File

@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.browse.source.browse
import android.content.res.Configuration import android.content.res.Configuration
import android.os.Bundle import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.Menu import android.view.Menu
import android.view.MenuInflater import android.view.MenuInflater
@ -360,7 +361,6 @@ open class BrowseSourceController(bundle: Bundle) :
inflater.inflate(R.menu.source_browse, menu) inflater.inflate(R.menu.source_browse, menu)
if (mode == Mode.RECOMMENDS) { if (mode == Mode.RECOMMENDS) {
menu.findItem(R.id.action_set_filter).isVisible = false
menu.findItem(R.id.action_search).isVisible = false menu.findItem(R.id.action_search).isVisible = false
} }
@ -405,7 +405,7 @@ open class BrowseSourceController(bundle: Bundle) :
super.onPrepareOptionsMenu(menu) super.onPrepareOptionsMenu(menu)
val isHttpSource = presenter.source is HttpSource val isHttpSource = presenter.source is HttpSource
menu.findItem(R.id.action_open_in_web_view).isVisible = isHttpSource && mode == Mode.CATALOGUE menu.findItem(R.id.action_open_in_web_view).isVisible = isHttpSource
val isLocalSource = presenter.source is LocalSource val isLocalSource = presenter.source is LocalSource
menu.findItem(R.id.action_local_source_help).isVisible = isLocalSource && mode == Mode.CATALOGUE menu.findItem(R.id.action_local_source_help).isVisible = isLocalSource && mode == Mode.CATALOGUE
@ -473,11 +473,16 @@ open class BrowseSourceController(bundle: Bundle) :
*/ */
fun onAddPageError(error: Throwable) { fun onAddPageError(error: Throwable) {
XLog.w("> Failed to load next catalogue page!", error) XLog.w("> Failed to load next catalogue page!", error)
XLog.w(
"> (source.id: %s, source.name: %s)", if (mode == Mode.CATALOGUE) {
presenter.source.id, XLog.w(
presenter.source.name "> (source.id: %s, source.name: %s)",
) presenter.source.id,
presenter.source.name
)
} else {
XLog.w("> Recommendations")
}
val adapter = adapter ?: return val adapter = adapter ?: return
adapter.onLoadMoreComplete(null) adapter.onLoadMoreComplete(null)
@ -497,6 +502,7 @@ open class BrowseSourceController(bundle: Bundle) :
} }
if (adapter.isEmpty) { if (adapter.isEmpty) {
Log.d("Adapter", "empty")
val actions = emptyList<EmptyView.Action>().toMutableList() val actions = emptyList<EmptyView.Action>().toMutableList()
if (presenter.source is LocalSource && mode == Mode.CATALOGUE) { if (presenter.source is LocalSource && mode == Mode.CATALOGUE) {
@ -640,16 +646,33 @@ open class BrowseSourceController(bundle: Bundle) :
*/ */
override fun onItemClick(view: View, position: Int): Boolean { override fun onItemClick(view: View, position: Int): Boolean {
val item = adapter?.getItem(position) as? SourceItem ?: return false val item = adapter?.getItem(position) as? SourceItem ?: return false
router.pushController(
MangaController(
item.manga, true,
args.getParcelable(SMART_SEARCH_CONFIG_KEY)
).withFadeTransaction()
)
when (mode) {
Mode.CATALOGUE -> router.pushController(
MangaController(
item.manga,
true,
args.getParcelable(SMART_SEARCH_CONFIG_KEY)
).withFadeTransaction()
)
Mode.RECOMMENDS -> openSmartSearch(item.manga.title)
}
return false return false
} }
// AZ -->
private fun openSmartSearch(title: String) {
val smartSearchConfig = SourceController.SmartSearchConfig(title)
router.pushController(
SourceController(
Bundle().apply {
putParcelable(SourceController.SMART_SEARCH_CONFIG, smartSearchConfig)
}
).withFadeTransaction()
)
}
// AZ <--
/** /**
* Called when a manga is long clicked. * Called when a manga is long clicked.
* *
@ -660,6 +683,7 @@ open class BrowseSourceController(bundle: Bundle) :
* @param position the position of the element clicked. * @param position the position of the element clicked.
*/ */
override fun onItemLongClick(position: Int) { override fun onItemLongClick(position: Int) {
if (mode == Mode.RECOMMENDS) { return }
val activity = activity ?: return val activity = activity ?: return
val manga = (adapter?.getItem(position) as? SourceItem?)?.manga ?: return val manga = (adapter?.getItem(position) as? SourceItem?)?.manga ?: return

View File

@ -154,7 +154,9 @@ open class BrowseSourcePresenter(
subscribeToMangaInitializer() subscribeToMangaInitializer()
// Create a new pager. // Create a new pager.
pager = if (recommends) RecommendsPager(searchQuery!!) else createPager(query, filters) pager = if (recommends) RecommendsPager(
query
) else createPager(query, filters)
val sourceId = source.id val sourceId = source.id

View File

@ -1,4 +1,4 @@
package eu.kanade.tachiyomi.ui.source.browse package eu.kanade.tachiyomi.ui.browse.source.browse
import android.util.Log import android.util.Log
import com.github.salomonbrys.kotson.array import com.github.salomonbrys.kotson.array
@ -82,11 +82,7 @@ open class RecommendsPager(val title: String) : Pager() {
}.map { }.map {
MangasPage(it, false) MangasPage(it, false)
}.doOnNext { }.doOnNext {
if (it.mangas.isNotEmpty()) { onPageReceived(it)
onPageReceived(it)
} else {
throw NoResultsException()
}
} }
} }
companion object { companion object {

View File

@ -227,7 +227,7 @@ class MangaInfoController(private val fromSource: Boolean = false) :
.launchIn(scope) .launchIn(scope)
} }
smartSearchConfig?.let { smartSearchConfig -> smartSearchConfig?.let { smartSearchConfig ->
binding.mergeBtn.visible() if (smartSearchConfig.origMangaId != null) { binding.mergeBtn.visible() }
binding.mergeBtn.clicks() binding.mergeBtn.clicks()
.onEach { .onEach {
// Init presenter here to avoid threading issues // Init presenter here to avoid threading issues
@ -236,7 +236,7 @@ class MangaInfoController(private val fromSource: Boolean = false) :
launch { launch {
try { try {
val mergedManga = withContext(Dispatchers.IO + NonCancellable) { val mergedManga = withContext(Dispatchers.IO + NonCancellable) {
presenter.smartSearchMerge(presenter.manga, smartSearchConfig.origMangaId) presenter.smartSearchMerge(presenter.manga, smartSearchConfig.origMangaId!!)
} }
parentController?.router?.pushController( parentController?.router?.pushController(