File tree 6 files changed +52
-0
lines changed
app/src/main/java/com/coffeeing/client
6 files changed +52
-0
lines changed Original file line number Diff line number Diff line change @@ -36,4 +36,8 @@ class MainDataSource @Inject constructor(
36
36
suspend fun getSort (
37
37
sort : String
38
38
): ResponseHomeList = mainService.getSort(sort)
39
+
40
+ suspend fun getFilter (
41
+ tag : String
42
+ ): ResponseHomeList = mainService.getFilter(tag)
39
43
}
Original file line number Diff line number Diff line change @@ -44,4 +44,8 @@ class MainRepositoryImpl @Inject constructor(
44
44
override suspend fun getSort (sort : String ): Result <List <HomeCoffeeing >> = runCatching {
45
45
mainDataSource.getSort(sort).toHomeList()
46
46
}
47
+
48
+ override suspend fun getFilter (tag : String ): Result <List <HomeCoffeeing >> = runCatching {
49
+ mainDataSource.getFilter(tag).toHomeList()
50
+ }
47
51
}
Original file line number Diff line number Diff line change @@ -46,4 +46,9 @@ interface MainService {
46
46
suspend fun getSort (
47
47
@Query(" sort" ) sort : String
48
48
): ResponseHomeList
49
+
50
+ @GET(" filter" )
51
+ suspend fun getFilter (
52
+ @Query(" tag" ) tag : String
53
+ ): ResponseHomeList
49
54
}
Original file line number Diff line number Diff line change @@ -31,4 +31,8 @@ interface MainRepository {
31
31
suspend fun getSort (
32
32
sort : String
33
33
): Result <List <HomeCoffeeing >>
34
+
35
+ suspend fun getFilter (
36
+ tag : String
37
+ ): Result <List <HomeCoffeeing >>
34
38
}
Original file line number Diff line number Diff line change @@ -66,6 +66,17 @@ class HomeActivity : BindingActivity<ActivityHomeBinding>(R.layout.activity_home
66
66
binding.ivHomeSearch.setOnClickListener {
67
67
viewModel.getSearch(binding.etHomeSearch.text.toString())
68
68
}
69
+
70
+ binding.cgHomeCoffeeingTypeFilter.setOnCheckedChangeListener { _, checkedId ->
71
+ when (binding.cgHomeCoffeeingTypeFilter.checkedChipId) {
72
+ R .id.chip_home_coffeeing_original -> viewModel.setFilterType(" original" )
73
+ R .id.chip_home_coffeeing_friend -> viewModel.setFilterType(" friend" )
74
+ R .id.chip_home_coffeeing_tour -> viewModel.setFilterType(" tour" )
75
+ R .id.chip_home_coffeeing_worker -> viewModel.setFilterType(" worker" )
76
+ R .id.chip_home_coffeeing_beginner -> viewModel.setFilterType(" beginner" )
77
+ else -> viewModel.setFilterType(" original" )
78
+ }
79
+ }
69
80
}
70
81
71
82
private fun addObservers () {
@@ -91,6 +102,12 @@ class HomeActivity : BindingActivity<ActivityHomeBinding>(R.layout.activity_home
91
102
viewModel.likeState.flowWithLifecycle(lifecycle).onEach {
92
103
viewModel.getHomeList()
93
104
}.launchIn(lifecycleScope)
105
+
106
+ viewModel.filterType.flowWithLifecycle(lifecycle).onEach {
107
+ viewModel.filterType.value?.let { tag ->
108
+ viewModel.getFilter(tag)
109
+ }
110
+ }.launchIn(lifecycleScope)
94
111
}
95
112
96
113
private fun showHomeSortDialog () {
Original file line number Diff line number Diff line change @@ -24,6 +24,8 @@ class HomeViewModel @Inject constructor(
24
24
val homeList get() = _homeList .asStateFlow()
25
25
private val _likeState = MutableStateFlow <Like ?>(null )
26
26
val likeState get() = _likeState .asStateFlow()
27
+ private val _filterType = MutableStateFlow <String ?>(null )
28
+ val filterType get() = _filterType .asStateFlow()
27
29
28
30
fun setHomeSort (homeSortType : HomeSortType ) {
29
31
_homeSort .value = homeSortType
@@ -65,6 +67,18 @@ class HomeViewModel @Inject constructor(
65
67
}
66
68
}
67
69
70
+ fun getFilter (tag : String ) {
71
+ viewModelScope.launch {
72
+ mainRepository.getFilter(tag)
73
+ .onSuccess {
74
+ _homeList .value = it
75
+ }
76
+ .onFailure { exception ->
77
+ Timber .e(exception.message)
78
+ }
79
+ }
80
+ }
81
+
68
82
fun postLike (postId : Int ) {
69
83
viewModelScope.launch {
70
84
mainRepository.postLike(postId)
@@ -76,4 +90,8 @@ class HomeViewModel @Inject constructor(
76
90
}
77
91
}
78
92
}
93
+
94
+ fun setFilterType (tag : String ) {
95
+ _filterType .value = tag
96
+ }
79
97
}
You can’t perform that action at this time.
0 commit comments