@@ -25,6 +25,7 @@ import androidx.compose.ui.layout.ContentScale
2525import androidx.compose.ui.res.painterResource
2626import androidx.compose.ui.res.stringResource
2727import androidx.compose.ui.res.vectorResource
28+ import androidx.compose.ui.text.style.TextOverflow
2829import androidx.compose.ui.tooling.preview.Preview
2930import androidx.compose.ui.unit.dp
3031import coil3.compose.AsyncImage
@@ -43,25 +44,27 @@ import com.yapp.ndgl.core.ui.R as CoreR
4344@Composable
4445internal fun UpcomingTravelCardSection (
4546 myTravel : MyTravel ,
47+ onMyTravelClick : (Long , Int ) -> Unit ,
48+ onPlaceClick : (String ) -> Unit ,
49+ onEmptyTravelClick : () -> Unit ,
4650 modifier : Modifier = Modifier ,
47- onCardClick : () -> Unit = {},
4851) {
4952 when (myTravel) {
5053 MyTravel .None -> EmptyTravelCard (
5154 modifier = modifier,
52- onCardClick = { /* FIXME: 인기 여행 컨텐츠 전체보기 페이지 이동 */ } ,
55+ onCardClick = onEmptyTravelClick ,
5356 )
5457
5558 is MyTravel .Upcoming -> UpcomingTravelCard (
5659 modifier = modifier,
5760 travel = myTravel,
58- onCardClick = onCardClick ,
61+ onCardClick = { onMyTravelClick(myTravel.travelId, myTravel.days) } ,
5962 )
6063
6164 is MyTravel .InProgress -> InProgressTravelCard (
6265 travel = myTravel,
63- onCardClick = onCardClick ,
64- onPlaceClick = { /* FIXME: 장소 상세 보기 페이지 이동 */ } ,
66+ onCardClick = { onMyTravelClick(myTravel.travelId, myTravel.days) } ,
67+ onPlaceClick = onPlaceClick ,
6568 )
6669 }
6770}
@@ -143,8 +146,10 @@ private fun UpcomingTravelCard(
143146 DayTag (dDay = travel.dDay)
144147 Text (
145148 text = travel.title,
146- style = NDGLTheme .typography.subtitleMdSemiBold,
147149 color = NDGLTheme .colors.black700,
150+ overflow = TextOverflow .Ellipsis ,
151+ maxLines = 1 ,
152+ style = NDGLTheme .typography.subtitleMdSemiBold,
148153 )
149154 }
150155 val dateFormatter = DateTimeFormatter .ofPattern(
@@ -193,13 +198,13 @@ private fun DayTag(
193198@Composable
194199private fun InProgressTravelCard (
195200 travel : MyTravel .InProgress ,
196- onCardClick : () -> Unit ,
197- onPlaceClick : () -> Unit ,
201+ onCardClick : (Long ) -> Unit ,
202+ onPlaceClick : (String ) -> Unit ,
198203 modifier : Modifier = Modifier ,
199204) {
200205 CardContainer (
201206 modifier = modifier,
202- onCardClick = onCardClick,
207+ onCardClick = { onCardClick(travel.travelId) } ,
203208 ) {
204209 Column (
205210 modifier = Modifier
@@ -208,15 +213,28 @@ private fun InProgressTravelCard(
208213 verticalArrangement = Arrangement .spacedBy(16 .dp),
209214 ) {
210215 Column (verticalArrangement = Arrangement .spacedBy(4 .dp)) {
211- Text (
212- text = stringResource(
213- R .string.home_my_travel_card_in_progress_title,
214- travel.title,
215- travel.dayCount,
216- ),
217- style = NDGLTheme .typography.subtitleMdSemiBold,
218- color = NDGLTheme .colors.black700,
219- )
216+ Row (
217+ modifier = Modifier .fillMaxWidth(),
218+ verticalAlignment = Alignment .CenterVertically ,
219+ ) {
220+ Text (
221+ text = travel.title + " " ,
222+ modifier = Modifier .weight(1f , fill = false ),
223+ style = NDGLTheme .typography.subtitleMdSemiBold,
224+ color = NDGLTheme .colors.black700,
225+ maxLines = 1 ,
226+ overflow = TextOverflow .Ellipsis ,
227+ )
228+ Text (
229+ text = stringResource(
230+ R .string.home_my_travel_card_in_progress_day_count,
231+ travel.dayCount,
232+ ),
233+ style = NDGLTheme .typography.subtitleMdSemiBold,
234+ color = NDGLTheme .colors.black700,
235+ maxLines = 1 ,
236+ )
237+ }
220238 val dateFormatter = DateTimeFormatter .ofPattern(
221239 stringResource(R .string.home_my_travel_card_date_format),
222240 )
@@ -234,7 +252,7 @@ private fun InProgressTravelCard(
234252 if (travel.currentPlace != null ) {
235253 PlaceInfoCard (
236254 place = travel.currentPlace,
237- onPlaceClick = onPlaceClick,
255+ onPlaceClick = { onPlaceClick(travel.currentPlace.googlePlaceId) } ,
238256 )
239257 }
240258 }
@@ -293,6 +311,8 @@ private fun PlaceInfoCard(
293311 Text (
294312 text = place.name,
295313 color = NDGLTheme .colors.black900,
314+ overflow = TextOverflow .Ellipsis ,
315+ maxLines = 1 ,
296316 style = NDGLTheme .typography.bodyLgSemiBold,
297317 )
298318 }
@@ -332,6 +352,9 @@ private fun EmptyTravelCardPreview() {
332352 UpcomingTravelCardSection (
333353 modifier = Modifier ,
334354 myTravel = MyTravel .None ,
355+ onMyTravelClick = { _, _ -> },
356+ onPlaceClick = {},
357+ onEmptyTravelClick = {},
335358 )
336359 }
337360}
@@ -351,6 +374,9 @@ private fun UpcomingTravelCardPreview() {
351374 endDate = LocalDate .of(2025 , 2 , 20 ),
352375 imageUrl = " " ,
353376 ),
377+ onMyTravelClick = { _, _ -> },
378+ onPlaceClick = {},
379+ onEmptyTravelClick = {},
354380 )
355381 }
356382}
@@ -369,12 +395,16 @@ private fun InProgressTravelCardPreview() {
369395 startDate = LocalDate .of(2025 , 2 , 1 ),
370396 endDate = LocalDate .of(2025 , 2 , 10 ),
371397 currentPlace = TravelPlace (
398+ googlePlaceId = " " ,
372399 category = PlaceCategory .TRANSPORT ,
373400 estimatedDuration = 60 ,
374401 name = " 인도 국제 공항" ,
375402 thumbnailUrl = " " ,
376403 ),
377404 ),
405+ onMyTravelClick = { _, _ -> },
406+ onPlaceClick = {},
407+ onEmptyTravelClick = {},
378408 )
379409 }
380410}
0 commit comments