From c87923956934e698b289293c1a235ca2c56682ee Mon Sep 17 00:00:00 2001 From: Haeeul Date: Tue, 2 Jan 2024 21:32:44 +0900 Subject: [PATCH] =?UTF-8?q?[refactor]=20#287=20=ED=95=84=ED=84=B0=20?= =?UTF-8?q?=EC=9E=AC=EC=84=A4=EC=A0=95=20=EA=B8=B0=EB=8A=A5=20-=20keyword?= =?UTF-8?q?=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/ui/filter/FilterFragment.kt | 55 +++++++++++-------- .../ui/filter/brand/FilterBrandFragment.kt | 1 - .../filter/keyword/FilterKeywordFragment.kt | 10 +++- .../utils/extension/FilterKeywordExtension.kt | 6 ++ .../filter/FilterKeywordViewModel.kt | 7 +++ 5 files changed, 52 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/com/scentsnote/android/ui/filter/FilterFragment.kt b/app/src/main/java/com/scentsnote/android/ui/filter/FilterFragment.kt index 4a81aaa3..e530dcba 100644 --- a/app/src/main/java/com/scentsnote/android/ui/filter/FilterFragment.kt +++ b/app/src/main/java/com/scentsnote/android/ui/filter/FilterFragment.kt @@ -62,6 +62,28 @@ class FilterFragment : Fragment() { initView() } + override fun onAttach(context: Context) { + super.onAttach(context) + + onBackPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + closeSelfWithAnimation() + } + } + requireActivity().onBackPressedDispatcher.addCallback(this, onBackPressedCallback) + } + + override fun onResume() { + super.onResume() + + firebaseAnalytics.setPageViewEvent("Filter", this::class.java.name) + } + + override fun onDetach() { + super.onDetach() + onBackPressedCallback.remove() + } + override fun onDestroyView() { super.onDestroyView() _binding = null @@ -97,11 +119,7 @@ class FilterFragment : Fragment() { text = "적용" isEnabled = false } - seriesViewModel.clearSelectedList() - brandViewModel.resetSelectedBrandList() - val fragment = filterViewPagerAdapter.getItem(1) as FilterBrandFragment - fragment.resetBrandList() - keywordViewModel.clearSelectedList() + resetFilter() } } @@ -111,26 +129,15 @@ class FilterFragment : Fragment() { } } - override fun onAttach(context: Context) { - super.onAttach(context) - - onBackPressedCallback = object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - closeSelfWithAnimation() - } - } - requireActivity().onBackPressedDispatcher.addCallback(this, onBackPressedCallback) - } - - override fun onResume() { - super.onResume() - - firebaseAnalytics.setPageViewEvent("Filter", this::class.java.name) - } + private fun resetFilter(){ + seriesViewModel.clearSelectedList() + brandViewModel.resetSelectedBrandList() + keywordViewModel.resetSelectedKeywordList() - override fun onDetach() { - super.onDetach() - onBackPressedCallback.remove() + val brandFragment = filterViewPagerAdapter.getItem(1) as FilterBrandFragment + brandFragment.resetBrandList() + val keywordFragment = filterViewPagerAdapter.getItem(2) as FilterKeywordFragment + keywordFragment.resetKeywordList() } private fun initViewPager() { diff --git a/app/src/main/java/com/scentsnote/android/ui/filter/brand/FilterBrandFragment.kt b/app/src/main/java/com/scentsnote/android/ui/filter/brand/FilterBrandFragment.kt index 5a5e689a..006e43f4 100644 --- a/app/src/main/java/com/scentsnote/android/ui/filter/brand/FilterBrandFragment.kt +++ b/app/src/main/java/com/scentsnote/android/ui/filter/brand/FilterBrandFragment.kt @@ -113,7 +113,6 @@ class FilterBrandFragment : Fragment() { } fun resetBrandList(){ -// updateContents(binding.tabBrand.getTabAt(binding.tabBrand.selectedTabPosition)) brandAdapter.notifyDataSetChanged() } } \ No newline at end of file diff --git a/app/src/main/java/com/scentsnote/android/ui/filter/keyword/FilterKeywordFragment.kt b/app/src/main/java/com/scentsnote/android/ui/filter/keyword/FilterKeywordFragment.kt index 05181db3..fbe78bbb 100644 --- a/app/src/main/java/com/scentsnote/android/ui/filter/keyword/FilterKeywordFragment.kt +++ b/app/src/main/java/com/scentsnote/android/ui/filter/keyword/FilterKeywordFragment.kt @@ -23,9 +23,11 @@ import com.scentsnote.android.viewmodel.filter.FilterKeywordViewModel * 키워드 리스트 제공 */ class FilterKeywordFragment : Fragment() { - private lateinit var binding: FragmentFilterKeywordBinding private val viewModel: FilterKeywordViewModel by activityViewModels() + private lateinit var binding: FragmentFilterKeywordBinding + private lateinit var keywordAdapter: FlexboxRecyclerViewAdapter + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -64,7 +66,7 @@ class FilterKeywordFragment : Fragment() { alignItems = AlignItems.STRETCH } - val keywordAdapter = FlexboxRecyclerViewAdapter( + keywordAdapter = FlexboxRecyclerViewAdapter( select = { info, selected -> viewModel.selectKeywordList(info, selected) }, isOverSelectLimit = { viewModel.isOverSelectLimit() } ) @@ -88,4 +90,8 @@ class FilterKeywordFragment : Fragment() { // TODO remove } + fun resetKeywordList(){ + keywordAdapter.notifyDataSetChanged() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/scentsnote/android/utils/extension/FilterKeywordExtension.kt b/app/src/main/java/com/scentsnote/android/utils/extension/FilterKeywordExtension.kt index e91781eb..ecdad00c 100644 --- a/app/src/main/java/com/scentsnote/android/utils/extension/FilterKeywordExtension.kt +++ b/app/src/main/java/com/scentsnote/android/utils/extension/FilterKeywordExtension.kt @@ -9,3 +9,9 @@ internal fun MutableList.removeKeyword(keywordInfo: KeywordInfo) { keyword?.checked = false this.remove(keyword) } + +internal fun MutableList.resetKeyword(){ + this.forEach { + it.checked = false + } +} diff --git a/app/src/main/java/com/scentsnote/android/viewmodel/filter/FilterKeywordViewModel.kt b/app/src/main/java/com/scentsnote/android/viewmodel/filter/FilterKeywordViewModel.kt index f69caea3..f8d08f92 100644 --- a/app/src/main/java/com/scentsnote/android/viewmodel/filter/FilterKeywordViewModel.kt +++ b/app/src/main/java/com/scentsnote/android/viewmodel/filter/FilterKeywordViewModel.kt @@ -9,6 +9,8 @@ import com.scentsnote.android.data.vo.request.FilterInfoP import com.scentsnote.android.data.vo.request.FilterType import com.scentsnote.android.data.vo.response.KeywordInfo import com.scentsnote.android.utils.extension.removeKeyword +import com.scentsnote.android.utils.extension.resetBrand +import com.scentsnote.android.utils.extension.resetKeyword import kotlinx.coroutines.launch import retrofit2.HttpException @@ -68,6 +70,11 @@ class FilterKeywordViewModel( _selectedCount.value = selectedKeywordList.size } + fun resetSelectedKeywordList(){ + selectedKeywordList.resetKeyword() + clearSelectedList() + } + companion object { private const val MAX_COUNT = 5 }