diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterAdapterDelegates.kt b/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterAdapterDelegates.kt index 5edcf13e8..b205a336a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterAdapterDelegates.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterAdapterDelegates.kt @@ -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 -> diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterCoordinator.kt b/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterCoordinator.kt index 976466180..784cc4330 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterCoordinator.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterCoordinator.kt @@ -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 { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterHeaderFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterHeaderFragment.kt index cd56216c7..f622effe6 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterHeaderFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/FilterHeaderFragment.kt @@ -39,7 +39,8 @@ class FilterHeaderFragment : BaseFragment(), 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) } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/OnFilterChangedListener.kt b/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/OnFilterChangedListener.kt index 0c67d4209..0b8116512 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/OnFilterChangedListener.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/filter/ui/OnFilterChangedListener.kt @@ -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) } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/list/ui/preview/PreviewFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/list/ui/preview/PreviewFragment.kt index 3f1df2cff..4982ac1cf 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/list/ui/preview/PreviewFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/list/ui/preview/PreviewFragment.kt @@ -98,7 +98,8 @@ class PreviewFragment : BaseFragment(), 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() } }