Dismiss the filter sheet when a button is pressed

This commit is contained in:
Jobobby04 2021-05-14 13:54:25 -04:00
parent 65f66630cf
commit bc871cd2ee
4 changed files with 12 additions and 8 deletions

View File

@ -5,5 +5,5 @@ import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.ui.base.controller.BaseController
interface BrowseSourceFilterHeader : CatalogueSource {
fun getFilterHeader(controller: BaseController<*>): RecyclerView.Adapter<*>
fun getFilterHeader(controller: BaseController<*>, onClick: () -> Unit): RecyclerView.Adapter<*>
}

View File

@ -234,8 +234,8 @@ class MangaDex(delegate: HttpSource, val context: Context) :
return FollowsHandler(baseHttpClient, headers, preferences, mdLang.lang, useLowQualityThumbnail(), mdList).updateFollowStatus(mangaID, followStatus)
}
override fun getFilterHeader(controller: BaseController<*>): MangaDexFabHeaderAdapter {
return MangaDexFabHeaderAdapter(controller, this)
override fun getFilterHeader(controller: BaseController<*>, onClick: () -> Unit): MangaDexFabHeaderAdapter {
return MangaDexFabHeaderAdapter(controller, this, onClick)
}
override suspend fun fetchRandomMangaUrl(): String {

View File

@ -43,7 +43,8 @@ class SourceFilterSheet(
// SY -->
searches = searches,
source = source,
controller = controller
controller = controller,
dismissSheet = ::dismiss
// SY <--
)
private val sheetBehavior: BottomSheetBehavior<*>
@ -93,7 +94,8 @@ class SourceFilterSheet(
// SY -->
searches: List<EXHSavedSearch> = emptyList(),
source: CatalogueSource? = null,
controller: BaseController<*>? = null
controller: BaseController<*>? = null,
dismissSheet: (() -> Unit)? = null
// SY <--
) :
SimpleNavigationView(context, attrs) {
@ -126,7 +128,7 @@ class SourceFilterSheet(
// SY -->
val mainSource = source?.getMainSource()
if (mainSource is BrowseSourceFilterHeader && controller != null) {
adapters += mainSource.getFilterHeader(controller)
adapters += mainSource.getFilterHeader(controller) { dismissSheet?.invoke() }
}
adapters += savedSearchesAdapter
adapters += adapter

View File

@ -16,7 +16,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import reactivecircus.flowbinding.android.view.clicks
class MangaDexFabHeaderAdapter(val controller: BaseController<*>, val source: CatalogueSource) :
class MangaDexFabHeaderAdapter(val controller: BaseController<*>, val source: CatalogueSource, val onClick: () -> Unit) :
RecyclerView.Adapter<MangaDexFabHeaderAdapter.SavedSearchesViewHolder>() {
private lateinit var binding: SourceFilterMangadexHeaderBinding
@ -36,6 +36,7 @@ class MangaDexFabHeaderAdapter(val controller: BaseController<*>, val source: Ca
fun bind() {
binding.mangadexFollows.setOnClickListener {
controller.router.replaceTopController(MangaDexFollowsController(source).withFadeTransaction())
onClick()
}
binding.mangadexRandom.clicks()
.onEach {
@ -43,6 +44,7 @@ class MangaDexFabHeaderAdapter(val controller: BaseController<*>, val source: Ca
(source as? RandomMangaSource)?.fetchRandomMangaUrl()
}
controller.router.replaceTopController(BrowseSourceController(source, randomMangaUrl).withFadeTransaction())
onClick()
}.launchIn(controller.viewScope)
}
}