refactor (search filter) : main selected chips are synced when selecting from bottom dialog chips

This commit is contained in:
Funny-Pen-7005 2023-12-12 11:43:19 +05:30
parent 3c152e04d1
commit 58d34b8294

View file

@ -256,12 +256,12 @@ class SearchFragment : Fragment() {
builder.behavior.state = BottomSheetBehavior.STATE_EXPANDED builder.behavior.state = BottomSheetBehavior.STATE_EXPANDED
val binding: HomeSelectMainpageBinding = HomeSelectMainpageBinding.inflate( val selectMainpageBinding: HomeSelectMainpageBinding = HomeSelectMainpageBinding.inflate(
builder.layoutInflater, builder.layoutInflater,
null, null,
false false
) )
builder.setContentView(binding.root) builder.setContentView(selectMainpageBinding.root)
builder.show() builder.show()
builder.let { dialog -> builder.let { dialog ->
val isMultiLang = ctx.getApiProviderLangSettings().let { set -> val isMultiLang = ctx.getApiProviderLangSettings().let { set ->
@ -315,14 +315,29 @@ class SearchFragment : Fragment() {
arrayAdapter.notifyDataSetChanged() arrayAdapter.notifyDataSetChanged()
} }
val selectedSearchTypes = DataStoreHelper.searchPreferenceTags val selectedSearchTypesFromDialog = DataStoreHelper.searchPreferenceTags
bindChips( context?.filterProviderByPreferredMedia()?.let { validAPIs ->
binding.tvtypesChipsScroll.tvtypesChips, bindChips(
selectedSearchTypes, selectMainpageBinding.tvtypesChipsScroll.tvtypesChips,
TvType.values().toList() selectedSearchTypesFromDialog,
) { list -> validAPIs.flatMap { api -> api.supportedTypes }.distinct()
updateList(list) ) { list ->
updateList(list)
// refresh selected chips in main chips
if (selectedSearchTypes.toSet() != list.toSet()) {
selectedSearchTypes.clear()
selectedSearchTypes.addAll(list)
bindChips(
binding?.tvtypesChipsScroll?.tvtypesChips,
selectedSearchTypes,
validAPIs.flatMap { api -> api.supportedTypes }.distinct()
) { // This already handled in another bindChips. Do nothing here! }
}
}
}
} }
cancelBtt?.setOnClickListener { cancelBtt?.setOnClickListener {
@ -343,8 +358,11 @@ class SearchFragment : Fragment() {
dialog.setOnDismissListener { dialog.setOnDismissListener {
DataStoreHelper.searchPreferenceProviders = currentSelectedApis.toList() DataStoreHelper.searchPreferenceProviders = currentSelectedApis.toList()
selectedApis = currentSelectedApis selectedApis = currentSelectedApis
// run search when dialog is close
search(binding?.mainSearch?.query?.toString())
} }
updateList(selectedSearchTypes.toList()) updateList(selectedSearchTypesFromDialog.toList())
} }
} }
} }