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 { itemView.setOnClickListener {
listener.onTagItemClick(item) listener.onTagItemClick(item, isFromChip = false)
} }
bind { payloads -> bind { payloads ->
@@ -69,7 +69,7 @@ fun filterTagMultipleDelegate(
) { ) {
itemView.setOnClickListener { itemView.setOnClickListener {
listener.onTagItemClick(item) listener.onTagItemClick(item, isFromChip = false)
} }
bind { payloads -> bind { payloads ->

View File

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

View File

@@ -39,7 +39,8 @@ class FilterHeaderFragment : BaseFragment<FragmentFilterHeaderBinding>(), ChipsV
if (tag == null) { if (tag == null) {
FilterSheetFragment.show(parentFragmentManager) FilterSheetFragment.show(parentFragmentManager)
} else { } 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 onSortItemClick(item: FilterItem.Sort)
fun onTagItemClick(item: FilterItem.Tag) fun onTagItemClick(item: FilterItem.Tag, isFromChip: Boolean)
fun onStateItemClick(item: FilterItem.State) fun onStateItemClick(item: FilterItem.State)
} }

View File

@@ -98,7 +98,8 @@ class PreviewFragment : BaseFragment<FragmentPreviewBinding>(), View.OnClickList
if (filter == null) { if (filter == null) {
startActivity(MangaListActivity.newIntent(requireContext(), setOf(tag))) startActivity(MangaListActivity.newIntent(requireContext(), setOf(tag)))
} else { } 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() closeSelf()
} }
} }