Skip to content

Commit decc74a

Browse files
committed
[NDGL-88] feature: 추천 여행 템플릿 조회 API 연동
1 parent ddc0ef3 commit decc74a

12 files changed

Lines changed: 87 additions & 194 deletions

File tree

data/travel/src/main/java/com/yapp/ndgl/data/travel/api/TravelTemplateApi.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.yapp.ndgl.data.travel.api
22

33
import com.yapp.ndgl.data.core.model.BaseResponse
44
import com.yapp.ndgl.data.travel.model.PopularTravelTemplates
5+
import com.yapp.ndgl.data.travel.model.RecommendTravelTemplates
56
import retrofit2.http.GET
67
import retrofit2.http.Query
78

@@ -12,4 +13,7 @@ interface TravelTemplateApi {
1213
@Query("page") page: Int? = null,
1314
@Query("size") size: Int? = null,
1415
): BaseResponse<PopularTravelTemplates>
16+
17+
@GET("/api/v1/travel-templates/recommend")
18+
suspend fun getRecommendTravelTemplates(): BaseResponse<RecommendTravelTemplates>
1519
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.yapp.ndgl.data.travel.model
2+
3+
import kotlinx.serialization.Serializable
4+
5+
@Serializable
6+
data class RecommendTravelTemplates(
7+
val content: List<TravelTemplateSummary>,
8+
val hasNext: Boolean,
9+
)

data/travel/src/main/java/com/yapp/ndgl/data/travel/model/TravelSummary.kt

Lines changed: 0 additions & 16 deletions
This file was deleted.

data/travel/src/main/java/com/yapp/ndgl/data/travel/repository/HomeRepository.kt

Lines changed: 0 additions & 119 deletions
This file was deleted.

data/travel/src/main/java/com/yapp/ndgl/data/travel/repository/TravelTemplateRepository.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.yapp.ndgl.data.travel.repository
33
import com.yapp.ndgl.data.core.model.getData
44
import com.yapp.ndgl.data.travel.api.TravelTemplateApi
55
import com.yapp.ndgl.data.travel.model.PopularTravelTemplates
6+
import com.yapp.ndgl.data.travel.model.RecommendTravelTemplates
67
import javax.inject.Inject
78
import javax.inject.Singleton
89

@@ -17,4 +18,8 @@ class TravelTemplateRepository @Inject constructor(
1718
suspend fun getPopularTravelTemplates(travelProgramId: Long): PopularTravelTemplates {
1819
return travelTemplateApi.getPopularTravelTemplates(travelProgramId = travelProgramId).getData()
1920
}
21+
22+
suspend fun getRecommendTravelTemplates(): RecommendTravelTemplates {
23+
return travelTemplateApi.getRecommendTravelTemplates().getData()
24+
}
2025
}

feature/home/src/main/java/com/yapp/ndgl/feature/home/main/HomeContract.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.yapp.ndgl.core.base.UiSideEffect
77
import com.yapp.ndgl.core.base.UiState
88
import com.yapp.ndgl.data.travel.model.PlaceCategory
99
import com.yapp.ndgl.data.travel.model.ProgramType
10-
import com.yapp.ndgl.data.travel.model.TravelSummary
1110
import java.time.LocalDate
1211

1312
@Stable
@@ -18,7 +17,7 @@ data class HomeState(
1817
val travelProgramTabs: List<TravelProgramTab> = emptyList(),
1918
val allPopularTravels: List<TravelContent> = emptyList(),
2019
val popularTravelsByProgram: Map<Long, List<TravelContent>> = emptyMap(),
21-
val recommendedContents: List<TravelSummary> = emptyList(),
20+
val recommendedContents: List<TravelContent> = emptyList(),
2221
) : UiState {
2322
@Stable
2423
sealed interface MyTravel {
@@ -79,6 +78,7 @@ data class HomeState(
7978
val nights: Int,
8079
val days: Int,
8180
val programName: String,
81+
val programType: ProgramType,
8282
val thumbnail: String,
8383
)
8484
}

feature/home/src/main/java/com/yapp/ndgl/feature/home/main/HomeScreen.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ private fun HomeScreenPreview() {
112112
nights = 7,
113113
days = 9,
114114
programName = "곽튜브",
115+
programType = ProgramType.YOUTUBE,
115116
thumbnail = "https://picsum.photos/200/300",
116117
),
117118
HomeState.TravelContent(
@@ -122,6 +123,7 @@ private fun HomeScreenPreview() {
122123
nights = 5,
123124
days = 6,
124125
programName = "빠니보틀",
126+
programType = ProgramType.TV,
125127
thumbnail = "https://picsum.photos/200/300",
126128
),
127129
HomeState.TravelContent(
@@ -132,6 +134,7 @@ private fun HomeScreenPreview() {
132134
nights = 4,
133135
days = 6,
134136
programName = "곽튜브",
137+
programType = ProgramType.YOUTUBE,
135138
thumbnail = "https://picsum.photos/200/300",
136139
),
137140
)

feature/home/src/main/java/com/yapp/ndgl/feature/home/main/HomeViewModel.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.yapp.ndgl.core.util.suspendRunCatching
66
import com.yapp.ndgl.data.auth.repository.AuthRepository
77
import com.yapp.ndgl.data.travel.model.TravelProgram
88
import com.yapp.ndgl.data.travel.model.TravelTemplateSummary
9-
import com.yapp.ndgl.data.travel.repository.HomeRepository
109
import com.yapp.ndgl.data.travel.repository.TravelProgramRepository
1110
import com.yapp.ndgl.data.travel.repository.TravelTemplateRepository
1211
import com.yapp.ndgl.data.travel.repository.UserTravelRepository
@@ -22,7 +21,6 @@ import javax.inject.Inject
2221
@HiltViewModel
2322
class HomeViewModel @Inject constructor(
2423
private val authRepository: AuthRepository,
25-
private val homeRepository: HomeRepository,
2624
private val travelProgramRepository: TravelProgramRepository,
2725
private val travelTemplateRepository: TravelTemplateRepository,
2826
private val userTravelRepository: UserTravelRepository,
@@ -162,9 +160,11 @@ class HomeViewModel @Inject constructor(
162160

163161
private fun loadRecommendedTravel() {
164162
viewModelScope.launch {
165-
suspendRunCatching { homeRepository.getRecommendedTravels() }.onSuccess { travels ->
166-
reduce { copy(recommendedContents = travels) }
167-
}
163+
suspendRunCatching { travelTemplateRepository.getRecommendTravelTemplates() }
164+
.onSuccess { travels ->
165+
val recommendTravels = travels.content.map { it.toTravelContent() }
166+
reduce { copy(recommendedContents = recommendTravels) }
167+
}
168168
}
169169
}
170170

@@ -184,6 +184,7 @@ class HomeViewModel @Inject constructor(
184184
nights = nights,
185185
days = days,
186186
programName = programName,
187+
programType = programType,
187188
thumbnail = thumbnail ?: "",
188189
)
189190

feature/home/src/main/java/com/yapp/ndgl/feature/home/main/PopularTravelSection.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ import com.yapp.ndgl.core.ui.theme.NDGLTheme
3232
import com.yapp.ndgl.core.util.FlagEmojiUtil.toFlagEmoji
3333
import com.yapp.ndgl.data.travel.model.ProgramType
3434
import com.yapp.ndgl.feature.home.R
35+
import com.yapp.ndgl.feature.home.util.toIconRes
3536
import kotlinx.collections.immutable.toPersistentList
36-
import com.yapp.ndgl.core.ui.R as CoreR
3737

3838
private const val COLUMN_ITEM_COUNT = 3
3939

@@ -207,11 +207,6 @@ private fun PopularTravelItem(
207207
}
208208
}
209209

210-
private fun ProgramType.toIconRes() = when (this) {
211-
ProgramType.YOUTUBE -> CoreR.drawable.ic_20_video
212-
ProgramType.TV -> CoreR.drawable.ic_20_video
213-
}
214-
215210
@Preview(showBackground = true)
216211
@Composable
217212
private fun PopularTravelSectionPreview() {
@@ -224,6 +219,7 @@ private fun PopularTravelSectionPreview() {
224219
nights = 7,
225220
days = 9,
226221
programName = "곽튜브",
222+
programType = ProgramType.YOUTUBE,
227223
thumbnail = "",
228224
),
229225
HomeState.TravelContent(
@@ -234,6 +230,7 @@ private fun PopularTravelSectionPreview() {
234230
nights = 5,
235231
days = 6,
236232
programName = "빠니보틀",
233+
programType = ProgramType.TV,
237234
thumbnail = "",
238235
),
239236
HomeState.TravelContent(
@@ -244,6 +241,7 @@ private fun PopularTravelSectionPreview() {
244241
nights = 4,
245242
days = 6,
246243
programName = "곽튜브",
244+
programType = ProgramType.YOUTUBE,
247245
thumbnail = "",
248246
),
249247
)

0 commit comments

Comments
 (0)