Skip to content

Commit 71e01fb

Browse files
committed
[feat] #23 filter api 연동
1 parent ae55f2b commit 71e01fb

File tree

6 files changed

+52
-0
lines changed

6 files changed

+52
-0
lines changed

app/src/main/java/com/coffeeing/client/data/datasource/remote/MainDataSource.kt

+4
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,8 @@ class MainDataSource @Inject constructor(
3636
suspend fun getSort(
3737
sort: String
3838
): ResponseHomeList = mainService.getSort(sort)
39+
40+
suspend fun getFilter(
41+
tag: String
42+
): ResponseHomeList = mainService.getFilter(tag)
3943
}

app/src/main/java/com/coffeeing/client/data/repository/MainRepositoryImpl.kt

+4
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,8 @@ class MainRepositoryImpl @Inject constructor(
4444
override suspend fun getSort(sort: String): Result<List<HomeCoffeeing>> = runCatching {
4545
mainDataSource.getSort(sort).toHomeList()
4646
}
47+
48+
override suspend fun getFilter(tag: String): Result<List<HomeCoffeeing>> = runCatching {
49+
mainDataSource.getFilter(tag).toHomeList()
50+
}
4751
}

app/src/main/java/com/coffeeing/client/data/service/MainService.kt

+5
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,9 @@ interface MainService {
4646
suspend fun getSort(
4747
@Query("sort") sort: String
4848
): ResponseHomeList
49+
50+
@GET("filter")
51+
suspend fun getFilter(
52+
@Query("tag") tag: String
53+
): ResponseHomeList
4954
}

app/src/main/java/com/coffeeing/client/domain/repository/MainRepository.kt

+4
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,8 @@ interface MainRepository {
3131
suspend fun getSort(
3232
sort: String
3333
): Result<List<HomeCoffeeing>>
34+
35+
suspend fun getFilter(
36+
tag: String
37+
): Result<List<HomeCoffeeing>>
3438
}

app/src/main/java/com/coffeeing/client/presentation/home/HomeActivity.kt

+17
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,17 @@ class HomeActivity : BindingActivity<ActivityHomeBinding>(R.layout.activity_home
6666
binding.ivHomeSearch.setOnClickListener {
6767
viewModel.getSearch(binding.etHomeSearch.text.toString())
6868
}
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+
}
6980
}
7081

7182
private fun addObservers() {
@@ -91,6 +102,12 @@ class HomeActivity : BindingActivity<ActivityHomeBinding>(R.layout.activity_home
91102
viewModel.likeState.flowWithLifecycle(lifecycle).onEach {
92103
viewModel.getHomeList()
93104
}.launchIn(lifecycleScope)
105+
106+
viewModel.filterType.flowWithLifecycle(lifecycle).onEach {
107+
viewModel.filterType.value?.let { tag ->
108+
viewModel.getFilter(tag)
109+
}
110+
}.launchIn(lifecycleScope)
94111
}
95112

96113
private fun showHomeSortDialog() {

app/src/main/java/com/coffeeing/client/presentation/home/HomeViewModel.kt

+18
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class HomeViewModel @Inject constructor(
2424
val homeList get() = _homeList.asStateFlow()
2525
private val _likeState = MutableStateFlow<Like?>(null)
2626
val likeState get() = _likeState.asStateFlow()
27+
private val _filterType = MutableStateFlow<String?>(null)
28+
val filterType get() = _filterType.asStateFlow()
2729

2830
fun setHomeSort(homeSortType: HomeSortType) {
2931
_homeSort.value = homeSortType
@@ -65,6 +67,18 @@ class HomeViewModel @Inject constructor(
6567
}
6668
}
6769

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+
6882
fun postLike(postId: Int) {
6983
viewModelScope.launch {
7084
mainRepository.postLike(postId)
@@ -76,4 +90,8 @@ class HomeViewModel @Inject constructor(
7690
}
7791
}
7892
}
93+
94+
fun setFilterType(tag: String) {
95+
_filterType.value = tag
96+
}
7997
}

0 commit comments

Comments
 (0)