Fix filter chips #572

This commit is contained in:
Koitharu
2023-11-28 16:11:18 +02:00
parent 225aacff43
commit 385003bcc8
5 changed files with 13 additions and 7 deletions

View File

@@ -52,7 +52,7 @@ fun filterTagDelegate(
) {
itemView.setOnClickListener {
listener.onTagItemClick(item)
listener.onTagItemClick(item, isFromChip = false)
}
bind { payloads ->
@@ -69,7 +69,7 @@ fun filterTagMultipleDelegate(
) {
itemView.setOnClickListener {
listener.onTagItemClick(item)
listener.onTagItemClick(item, isFromChip = false)
}
bind { payloads ->

View File

@@ -92,10 +92,14 @@ class FilterCoordinator @Inject constructor(
repository.defaultSortOrder = item.order
}
override fun onTagItemClick(item: FilterItem.Tag) {
override fun onTagItemClick(item: FilterItem.Tag, isFromChip: Boolean) {
currentState.update { oldValue ->
val newTags = if (!item.isMultiple) {
setOf(item.tag)
if (isFromChip && item.isChecked) {
emptySet()
} else {
setOf(item.tag)
}
} else if (item.isChecked) {
oldValue.tags - item.tag
} else {

View File

@@ -39,7 +39,8 @@ class FilterHeaderFragment : BaseFragment<FragmentFilterHeaderBinding>(), ChipsV
if (tag == null) {
FilterSheetFragment.show(parentFragmentManager)
} else {
filter.onTagItemClick(FilterItem.Tag(tag, filter.header.value.allowMultipleTags, !chip.isChecked))
val filterItem = FilterItem.Tag(tag, filter.header.value.allowMultipleTags, !chip.isChecked)
filter.onTagItemClick(filterItem, isFromChip = true)
}
}

View File

@@ -7,7 +7,7 @@ interface OnFilterChangedListener : ListHeaderClickListener {
fun onSortItemClick(item: FilterItem.Sort)
fun onTagItemClick(item: FilterItem.Tag)
fun onTagItemClick(item: FilterItem.Tag, isFromChip: Boolean)
fun onStateItemClick(item: FilterItem.State)
}

View File

@@ -98,7 +98,8 @@ class PreviewFragment : BaseFragment<FragmentPreviewBinding>(), View.OnClickList
if (filter == null) {
startActivity(MangaListActivity.newIntent(requireContext(), setOf(tag)))
} else {
filter.onTagItemClick(FilterItem.Tag(tag, filter.header.value.allowMultipleTags, false))
val filterItem = FilterItem.Tag(tag, filter.header.value.allowMultipleTags, false)
filter.onTagItemClick(filterItem, isFromChip = false)
closeSelf()
}
}