From b71a272631087dc353f819e46b1704ffb1d2f82d Mon Sep 17 00:00:00 2001 From: Son Juwan Date: Thu, 17 Jul 2025 04:44:53 +0900 Subject: [PATCH 1/2] =?UTF-8?q?mod/#112:=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designsystem/component/CourseDetail.kt | 286 ++++++++++-------- .../key/core/designsystem/component/TopBar.kt | 2 + 2 files changed, 165 insertions(+), 123 deletions(-) diff --git a/app/src/main/java/com/paw/key/core/designsystem/component/CourseDetail.kt b/app/src/main/java/com/paw/key/core/designsystem/component/CourseDetail.kt index 32ad988b..87dcdce4 100644 --- a/app/src/main/java/com/paw/key/core/designsystem/component/CourseDetail.kt +++ b/app/src/main/java/com/paw/key/core/designsystem/component/CourseDetail.kt @@ -2,6 +2,7 @@ package com.paw.key.core.designsystem.component import android.util.Log import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -9,12 +10,15 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -49,6 +53,7 @@ fun CourseDetail( title : String, petName : String, date : String, + Icon : Int, location : String, onClickLike: (Boolean) -> Unit, petProfileImage : String, @@ -63,40 +68,62 @@ fun CourseDetail( ) { val context = LocalContext.current val isLiked = remember { mutableStateOf(false) } + LaunchedEffect(routeMapImageUrl) { - Log.d("LaunchedEffect", "LaunchedEffect: $routeMapImageUrl") - Log.d("LaunchedEffect", "LaunchedEffect: $walkingImageUrls") - Log.d("LaunchedEffect", "LaunchedEffect: $petProfileImage") + Log.d("LaunchedEffect", "routeMapImageUrl: $routeMapImageUrl") + Log.d("LaunchedEffect", "walkingImageUrls: $walkingImageUrls") + Log.d("LaunchedEffect", "petProfileImage: $petProfileImage") } Column( modifier = modifier - .fillMaxWidth() + .fillMaxSize() + .background(color = PawKeyTheme.colors.white1) ) { - AsyncImage( - model = ImageRequest.Builder(context) - .data(routeMapImageUrl) - .crossfade(true) - .build(), - contentDescription = null, - contentScale = ContentScale.Crop, + // 이미지 영역을 별도 Box로 분리 + Box( modifier = Modifier .fillMaxWidth() .height(244.dp) - .background(color = Gray100) - .background(Color.Gray) - ) + ) { + AsyncImage( + model = ImageRequest.Builder(context) + .data(routeMapImageUrl) + .crossfade(true) + .build(), + contentDescription = null, + contentScale = ContentScale.Crop, + modifier = Modifier + .fillMaxSize() + .background(color = Gray100) + ) + Row( + modifier = Modifier + .fillMaxWidth() + .height(10.dp) + .background( + color = PawKeyTheme.colors.white1, + shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp) + ) + .clip(RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)) + .align(Alignment.BottomCenter) + ){ + } + } + + // 컨텐츠 영역 Column( modifier = Modifier + .fillMaxWidth() .background( color = PawKeyTheme.colors.white1, shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp) ) - .clip(RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp) - ) + .clip(RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)) .padding(horizontal = 16.dp) ) { + // 제목과 좋아요 버튼 Row( horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, @@ -111,21 +138,19 @@ fun CourseDetail( ) Icon( - imageVector = if (isLiked.value) - ImageVector.vectorResource(id = R.drawable.ic_heart_filled) - else - ImageVector.vectorResource(id = R.drawable.ic_heart_default), + imageVector = ImageVector.vectorResource(id = Icon), contentDescription = "좋아요", tint = Color.Unspecified, modifier = Modifier .size(24.dp) .noRippleClickable { - isLiked.value = !isLiked.value // 로컬 상태 먼저 변경 - onClickLike(!isLiked.value) // 변경된 값을 넘김 + isLiked.value = !isLiked.value + onClickLike(isLiked.value) } ) } + // 펫 정보 Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier @@ -140,6 +165,7 @@ fun CourseDetail( contentDescription = null, modifier = Modifier .size(44.dp) + .clip(CircleShape) ) Text( @@ -149,8 +175,9 @@ fun CourseDetail( ) } + // 위치와 날짜 정보 Column(modifier = Modifier.padding(vertical = 12.dp)) { - Row { + Row(verticalAlignment = Alignment.CenterVertically) { Icon( imageVector = ImageVector.vectorResource(id = R.drawable.ic_walk_review_location), contentDescription = "장소", @@ -163,7 +190,8 @@ fun CourseDetail( color = PawKeyTheme.colors.gray400 ) } - Row { + Spacer(modifier = Modifier.height(4.dp)) + Row(verticalAlignment = Alignment.CenterVertically) { Icon( imageVector = ImageVector.vectorResource(id = R.drawable.ic_walk_review_time), contentDescription = "시간", @@ -178,139 +206,150 @@ fun CourseDetail( } } - + // 카테고리 칩들 Row( horizontalArrangement = Arrangement.spacedBy(8.dp), - modifier = Modifier - .padding(vertical = 13.dp) + modifier = Modifier.padding(vertical = 13.dp) ) { - categorySummary.forEach { - SubChip( - text = it - ) + categorySummary.forEach { category -> + SubChip(text = category) } } Spacer(modifier = Modifier.height(12.dp)) - LazyRow( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 12.dp), - horizontalArrangement = Arrangement.spacedBy(8.dp) - ) { - items(walkingImageUrls.size) { index -> - AsyncImage( - model = ImageRequest.Builder(context) - .data(walkingImageUrls[index]) - .crossfade(true) - .build(), - contentDescription = null, - modifier = Modifier - .width(100.dp) - .height(100.dp) - .clip(RoundedCornerShape(8.dp)) - .clickable { onImageClick(walkingImageUrls[index]) }, - contentScale = ContentScale.Crop - ) + // 산책 이미지들 + if (walkingImageUrls.isNotEmpty()) { + LazyRow( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 12.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + items(walkingImageUrls.size) { index -> + AsyncImage( + model = ImageRequest.Builder(context) + .data(walkingImageUrls[index]) + .crossfade(true) + .build(), + contentDescription = null, + modifier = Modifier + .width(100.dp) + .height(100.dp) + .clip(RoundedCornerShape(8.dp)) + .clickable { onImageClick(walkingImageUrls[index]) }, + contentScale = ContentScale.Crop + ) + } } } + // 컨텐츠 Text( text = content, - style = PawKeyTheme.typography.body14R + style = PawKeyTheme.typography.body14R, + modifier = Modifier.padding(vertical = 12.dp) ) - Spacer(modifier = Modifier.height(12.dp)) Text( text = "본인 위치에서의 거리", style = PawKeyTheme.typography.caption12Sb1, - color = PawKeyTheme.colors.gray200 + color = PawKeyTheme.colors.gray200, + modifier = Modifier.padding(vertical = 12.dp) ) - Spacer(modifier = Modifier.height(12.dp)) HorizontalDivider( modifier = Modifier .fillMaxWidth() .height(8.dp) - .zIndex(1F) + .border( + width = 8.dp, + color = PawKeyTheme.colors.gray100, + ) ) + // 리뷰 섹션 + ReviewSection( + categoryTop3 = categoryTop3, + totalReviewCount = totalReviewCount + ) } + } +} - Spacer(modifier = Modifier.height(8.dp)) +@Composable +private fun ReviewSection( + categoryTop3: List, + totalReviewCount: Int +) { + Column(modifier = Modifier.padding(horizontal = 16.dp)) { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = "이런 점이 좋았어요", + style = PawKeyTheme.typography.head18Sb, + color = PawKeyTheme.colors.black, + modifier = Modifier.padding(vertical = 16.dp) + ) + Spacer(modifier = Modifier.width(12.dp)) + Icon( + imageVector = ImageVector.vectorResource(id = R.drawable.ic_edit), + contentDescription = "편집", + tint = Color.Unspecified + ) + Spacer(modifier = Modifier.width(4.dp)) + Text( + text = totalReviewCount.toString(), + style = PawKeyTheme.typography.caption12M, + color = PawKeyTheme.colors.gray200, + ) + } - Column(modifier = Modifier.padding(horizontal = 16.dp)) { - Row( - modifier = Modifier - .fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically - ) { - Text( - text = "이런 점이 좋았어요", - style = PawKeyTheme.typography.head18Sb, - color = PawKeyTheme.colors.black, - modifier = Modifier.padding(vertical = 16.dp) - ) - Spacer(modifier = Modifier.width(12.dp)) - Icon( - imageVector = ImageVector.vectorResource(id = R.drawable.ic_edit), - contentDescription = "편집", - tint = Color.Unspecified - ) - Spacer(modifier = Modifier.width(4.dp)) - Text( - text = totalReviewCount.toString(), - style = PawKeyTheme.typography.caption12M, - color = PawKeyTheme.colors.gray200, - ) - } + if (categoryTop3.isEmpty()) { + Text( + text = "아직은 후기가 없어요.", + style = PawKeyTheme.typography.body16Sb, + color = PawKeyTheme.colors.gray400, + modifier = Modifier.align(Alignment.CenterHorizontally) + ) + } else { + categoryTop3.forEach { tag -> + val fillRatio = (tag.percentage.coerceIn(0, 100)) / 100f + val backgroundColor = when (tag.rank) { + 1 -> PawKeyTheme.colors.green300 + 2 -> PawKeyTheme.colors.green200 + 3 -> PawKeyTheme.colors.green100 + else -> PawKeyTheme.colors.green500 + } - if (categoryTop3.isEmpty()) { - Text( - text = "아직은 후기가 없어요.", - style = PawKeyTheme.typography.body16Sb, - color = PawKeyTheme.colors.gray400, + Box( modifier = Modifier - .align(Alignment.CenterHorizontally) - ) - } else { - categoryTop3.forEach { tag -> - val fillRatio = (tag.percentage.coerceIn(0, 100)) / 100f - val backgroundColor = when (tag.rank) { - 1 -> PawKeyTheme.colors.green300 - 2 -> PawKeyTheme.colors.green200 - 3 -> PawKeyTheme.colors.green100 - else -> PawKeyTheme.colors.green500 - } - + .fillMaxWidth() + .padding(vertical = 4.dp) + .height(37.dp) + .background(PawKeyTheme.colors.white2, RoundedCornerShape(6.dp)) + ) { Box( modifier = Modifier - .fillMaxWidth() - .padding(vertical = 4.dp) - .height(37.dp) - .background(PawKeyTheme.colors.white2, RoundedCornerShape(6.dp)) - ) { - Box( - modifier = Modifier - .fillMaxWidth(fillRatio) - .fillMaxHeight() - .background(backgroundColor, RoundedCornerShape(6.dp)) - ) + .fillMaxWidth(fillRatio) + .fillMaxHeight() + .background(backgroundColor, RoundedCornerShape(6.dp)) + ) - Text( - text = tag.optionText, - color = PawKeyTheme.colors.black, - modifier = Modifier - .align(Alignment.CenterStart) - .padding(horizontal = 16.dp) - .zIndex(1f), - style = PawKeyTheme.typography.caption12Sb2, - maxLines = 1, - softWrap = false, - overflow = TextOverflow.Visible - ) - } + Text( + text = tag.optionText, + color = PawKeyTheme.colors.black, + modifier = Modifier + .align(Alignment.CenterStart) + .padding(horizontal = 16.dp) + .zIndex(1f), + style = PawKeyTheme.typography.caption12Sb2, + maxLines = 1, + softWrap = false, + overflow = TextOverflow.Visible + ) } } } @@ -326,6 +365,7 @@ fun CourseDetailPreview() { title = "홍대 주변 좋은 산책 코스", petName = "핑구", date = "2025/06/30", + Icon = R.drawable.ic_eye_linear_gray_valid, location = "홍대입구역", onClickLike = {}, petProfileImage = "https://pawkey-server.com/image/profile.png", diff --git a/app/src/main/java/com/paw/key/core/designsystem/component/TopBar.kt b/app/src/main/java/com/paw/key/core/designsystem/component/TopBar.kt index a3ebe1f4..ec89be07 100644 --- a/app/src/main/java/com/paw/key/core/designsystem/component/TopBar.kt +++ b/app/src/main/java/com/paw/key/core/designsystem/component/TopBar.kt @@ -1,5 +1,6 @@ package com.paw.key.core.designsystem.component +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -26,6 +27,7 @@ fun TopBar( Box( modifier = modifier .fillMaxWidth() + .background(color = PawKeyTheme.colors.white1) .padding(vertical = 12.dp, horizontal = 16.dp) ) { if (isBackVisible) { From c06271e13c54be41261bde6fb1df78f82d7efd25 Mon Sep 17 00:00:00 2001 From: Son Juwan Date: Thu, 17 Jul 2025 04:45:14 +0900 Subject: [PATCH 2/2] =?UTF-8?q?mod/#112:=20archive=20=EB=B7=B0=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entire/tab/map/List/TabListScreen.kt | 3 +- .../map/List/viewmodel/TapListViewModel.kt | 31 ---- .../ui/mypage/ArchivedCourseDetailScreen.kt | 146 ++++++++++-------- .../ui/mypage/SavedCourseDetailScreen.kt | 1 + .../ui/mypage/state/ArchivedDetailContract.kt | 1 + 5 files changed, 89 insertions(+), 93 deletions(-) diff --git a/app/src/main/java/com/paw/key/presentation/ui/course/entire/tab/map/List/TabListScreen.kt b/app/src/main/java/com/paw/key/presentation/ui/course/entire/tab/map/List/TabListScreen.kt index 3cb0edb0..20067d05 100644 --- a/app/src/main/java/com/paw/key/presentation/ui/course/entire/tab/map/List/TabListScreen.kt +++ b/app/src/main/java/com/paw/key/presentation/ui/course/entire/tab/map/List/TabListScreen.kt @@ -47,7 +47,8 @@ fun TapListRoute( modifier = modifier, navigateToDetail = navigateToDetail, viewModel = viewModel, - onClickLike = { postId, isLiked -> + onClickLike = { + postId, isLiked -> viewModel.toggleLike(postId = postId, isLiked = isLiked) } ) diff --git a/app/src/main/java/com/paw/key/presentation/ui/course/entire/tab/map/List/viewmodel/TapListViewModel.kt b/app/src/main/java/com/paw/key/presentation/ui/course/entire/tab/map/List/viewmodel/TapListViewModel.kt index e752db10..942e1f93 100644 --- a/app/src/main/java/com/paw/key/presentation/ui/course/entire/tab/map/List/viewmodel/TapListViewModel.kt +++ b/app/src/main/java/com/paw/key/presentation/ui/course/entire/tab/map/List/viewmodel/TapListViewModel.kt @@ -92,38 +92,7 @@ class TapListViewModel @Inject constructor( _state.update { it.copy(selectedSortOption = option) } } - fun toggleLike(postId: Int, isLiked: Boolean) { - viewModelScope.launch { - _state.update { currentState -> - val updatedPostsResult = currentState.postsResult?.let { postsResult -> - postsResult.copy( - posts = postsResult.posts.map { post -> - if (post.postId == postId) { - post.copy(isLike = isLiked) - } else { - post - } - } - ) - } -// val updatedCourseList = currentState.courseList.map { course -> -// if (course.postId == postId) { -// // ArchivedListEntity의 실제 프로퍼티명에 맞게 수정 -// // isLiked 대신 isLike 또는 liked 등의 프로퍼티를 확인하고 사용 -// course.copy(isLike = isLiked) // 또는 course.copy(liked = isLiked) -// } else { -// course -// } -// } - - currentState.copy( - postsResult = updatedPostsResult, -// courseList = updatedCourseList - ) - } - } - } fun toggleLike(userId: Int, postId: Int) { viewModelScope.launch { diff --git a/app/src/main/java/com/paw/key/presentation/ui/mypage/ArchivedCourseDetailScreen.kt b/app/src/main/java/com/paw/key/presentation/ui/mypage/ArchivedCourseDetailScreen.kt index eb522a75..f892953b 100644 --- a/app/src/main/java/com/paw/key/presentation/ui/mypage/ArchivedCourseDetailScreen.kt +++ b/app/src/main/java/com/paw/key/presentation/ui/mypage/ArchivedCourseDetailScreen.kt @@ -1,24 +1,34 @@ package com.paw.key.presentation.ui.mypage +import android.app.Activity import android.util.Log import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalView import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.compose.ui.zIndex import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.paw.key.R import com.paw.key.core.designsystem.component.CourseDetail import com.paw.key.core.designsystem.component.ImageModal import com.paw.key.core.designsystem.component.PawkeyButton @@ -32,10 +42,10 @@ import com.paw.key.presentation.ui.mypage.viewmodel.ArchivedDetailViewModel fun ArchivedDetailRoute( navigateUp: () -> Unit, navigateToSharedWalk: () -> Unit, - routeId : Int, - pageId : Int, + routeId: Int, + pageId: Int, modifier: Modifier = Modifier, - viewModel: ArchivedDetailViewModel = hiltViewModel() + viewModel: ArchivedDetailViewModel = hiltViewModel(), ) { val state by viewModel.state.collectAsStateWithLifecycle() @@ -73,86 +83,100 @@ fun ArchivedDetailRoute( @Composable fun ArchivedCourseDetailScreen( - title : String, - petName : String, - date : String, - location : String, - isLike : Boolean, - content : String, - petProfileImage : String, - routeMapImageUrl : String, - categorySummary : List, - categoryTop3 : List, - totalReviewCount : Int, - walkingImageUrls : List, - clickImage : String, + title: String, + petName: String, + date: String, + location: String, + isLike: Boolean, + content: String, + petProfileImage: String, + routeMapImageUrl: String, + categorySummary: List, + categoryTop3: List, + totalReviewCount: Int, + walkingImageUrls: List, + clickImage: String, navigateUp: () -> Unit, navigateToSharedWalk: () -> Unit, - onClickImage : (String) -> Unit, - modifier: Modifier = Modifier + onClickImage: (String) -> Unit, + modifier: Modifier = Modifier, ) { var isImageExpanded by remember { mutableStateOf(false) } + val isLiked = remember { mutableStateOf(false) } + val view = LocalView.current + val window = (view.context as? Activity)?.window + val statusBarColor = PawKeyTheme.colors.green500 - Column ( + SideEffect { + window?.let { + it.statusBarColor = statusBarColor.toArgb() + // it.statusBarColor = PawKeyTheme.colors.green500.toArgb() + } + } + + Column( modifier = modifier .fillMaxSize() - .background(color = White1) ) { TopBar( title = "내가 기록한 산책 루트", onBackClick = navigateUp ) - Box(modifier = Modifier.fillMaxSize()) { - LazyColumn( - modifier = modifier - .fillMaxWidth() - .background(color = White1) - ) { - item { - CourseDetail( - title = title, - petName = petName, - date = date, - location = location, - onClickLike = {}, - content = content, - petProfileImage = petProfileImage, - routeMapImageUrl = routeMapImageUrl, - categorySummary = categorySummary, - categoryTop3 = categoryTop3, - totalReviewCount = totalReviewCount, - walkingImageUrls = walkingImageUrls, - onImageClick = { - onClickImage(it) - isImageExpanded = true - } - ) - - PawkeyButton( - text = "해당 루트로 산책하기", - enabled = true, - onClick = navigateToSharedWalk, - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp) - ) - } - } + LazyColumn( + modifier = modifier + .fillMaxSize() + .background(color = Color.Transparent) + .zIndex(2F) + ) { + item { + CourseDetail( + title = title, + petName = petName, + date = date, + Icon = if(isLiked.value) R.drawable.ic_eye_linear_gray_invalid else R.drawable.ic_eye_linear_gray_valid, + location = location, + content = content, + onClickLike = {}, + petProfileImage = petProfileImage, + routeMapImageUrl = routeMapImageUrl, + categorySummary = categorySummary, + categoryTop3 = categoryTop3, + totalReviewCount = totalReviewCount, + walkingImageUrls = walkingImageUrls, + onImageClick = { + onClickImage(it) + isImageExpanded = true + } + ) + + Spacer(modifier = Modifier.height(36.dp)) - if (isImageExpanded) { - ImageModal( - imageUrl = clickImage, - onDismiss = { isImageExpanded = false } + PawkeyButton( + text = "해당 루트로 산책하기", + enabled = true, + onClick = navigateToSharedWalk, + modifier = Modifier + .fillMaxWidth() + .padding(top = 16.dp) + .background(color = PawKeyTheme.colors.green500) ) } } + + if (isImageExpanded) { + ImageModal( + imageUrl = clickImage, + onDismiss = { isImageExpanded = false } + ) + } + } } @Preview @Composable -fun ArchivedCourseDetailPreview(){ +fun ArchivedCourseDetailPreview() { PawKeyTheme { ArchivedCourseDetailScreen( title = "홍대 주변 좋은 산책 코스", diff --git a/app/src/main/java/com/paw/key/presentation/ui/mypage/SavedCourseDetailScreen.kt b/app/src/main/java/com/paw/key/presentation/ui/mypage/SavedCourseDetailScreen.kt index 12c2127b..550abb38 100644 --- a/app/src/main/java/com/paw/key/presentation/ui/mypage/SavedCourseDetailScreen.kt +++ b/app/src/main/java/com/paw/key/presentation/ui/mypage/SavedCourseDetailScreen.kt @@ -100,6 +100,7 @@ fun SavedCourseDetailScreen( title = title, petName = petName, date = date, + Icon = if(isLike) com.paw.key.R.drawable.ic_heart_default else com.paw.key.R.drawable.ic_heart_filled, location = location, onClickLike = {}, content = content, diff --git a/app/src/main/java/com/paw/key/presentation/ui/mypage/state/ArchivedDetailContract.kt b/app/src/main/java/com/paw/key/presentation/ui/mypage/state/ArchivedDetailContract.kt index 6d4d48a5..aafb7db4 100644 --- a/app/src/main/java/com/paw/key/presentation/ui/mypage/state/ArchivedDetailContract.kt +++ b/app/src/main/java/com/paw/key/presentation/ui/mypage/state/ArchivedDetailContract.kt @@ -9,6 +9,7 @@ data class ArchivedDetailState( val routeId: Int = 0, val postTitle: String = "", val postContent: String = "", + val isPublic : Boolean = false, val isLiked: Boolean = false, val petName: String = "", val petProfileImage: String = "",