From 58d34b8294686298d1029763a9f64cddfda0fe5f Mon Sep 17 00:00:00 2001 From: Funny-Pen-7005 Date: Tue, 12 Dec 2023 11:43:19 +0530 Subject: [PATCH] refactor (search filter) : main selected chips are synced when selecting from bottom dialog chips --- .../cloudstream3/ui/search/SearchFragment.kt | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchFragment.kt index 65dfd679..75759b7a 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchFragment.kt @@ -256,12 +256,12 @@ class SearchFragment : Fragment() { builder.behavior.state = BottomSheetBehavior.STATE_EXPANDED - val binding: HomeSelectMainpageBinding = HomeSelectMainpageBinding.inflate( + val selectMainpageBinding: HomeSelectMainpageBinding = HomeSelectMainpageBinding.inflate( builder.layoutInflater, null, false ) - builder.setContentView(binding.root) + builder.setContentView(selectMainpageBinding.root) builder.show() builder.let { dialog -> val isMultiLang = ctx.getApiProviderLangSettings().let { set -> @@ -315,14 +315,29 @@ class SearchFragment : Fragment() { arrayAdapter.notifyDataSetChanged() } - val selectedSearchTypes = DataStoreHelper.searchPreferenceTags + val selectedSearchTypesFromDialog = DataStoreHelper.searchPreferenceTags - bindChips( - binding.tvtypesChipsScroll.tvtypesChips, - selectedSearchTypes, - TvType.values().toList() - ) { list -> - updateList(list) + context?.filterProviderByPreferredMedia()?.let { validAPIs -> + bindChips( + selectMainpageBinding.tvtypesChipsScroll.tvtypesChips, + selectedSearchTypesFromDialog, + validAPIs.flatMap { api -> api.supportedTypes }.distinct() + ) { 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 { @@ -343,8 +358,11 @@ class SearchFragment : Fragment() { dialog.setOnDismissListener { DataStoreHelper.searchPreferenceProviders = currentSelectedApis.toList() selectedApis = currentSelectedApis + + // run search when dialog is close + search(binding?.mainSearch?.query?.toString()) } - updateList(selectedSearchTypes.toList()) + updateList(selectedSearchTypesFromDialog.toList()) } } }