From 7f9cd577c99d7e8444e06b1199ef56a1efd959fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=B5=E1=86=AB?= =?UTF-8?q?=E1=84=8B=E1=85=AE?= Date: Thu, 24 Apr 2025 00:26:19 +0900 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20=EC=BA=98=EB=A6=B0=EB=8D=94=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teamdateroad/presentation/ui/enroll/EnrollContract.kt | 4 +++- .../org/sopt/teamdateroad/presentation/util/Constraints.kt | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollContract.kt index 28fc395..d7c120b 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollContract.kt @@ -50,7 +50,9 @@ class EnrollContract { val timePickers: List = listOf( Picker(items = listOf(TimePicker.AM, TimePicker.PM)), Picker(items = (HOUR_START..HOUR_END).map { it.toString() }), - Picker(items = (MINUTE_START..MINUTE_END).map { it.toString().padStart(2, '0') }) + Picker( + items = (MINUTE_START..MINUTE_END step 5).map { it.toString().padStart(2, '0') } + ) ), val isRegionBottomSheetOpen: Boolean = false, val onRegionBottomSheetRegionSelected: RegionType? = RegionType.SEOUL, diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/Constraints.kt index 6278e40..aa4ac31 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/Constraints.kt @@ -18,7 +18,7 @@ object CourseDetailAmplitude { object DatePicker { const val DATE_PATTERN = "yyyy.MM.dd" const val YEAR_START = 2000 - const val YEAR_END = 2026 + const val YEAR_END = 2050 const val YEAR_START_INDEX = 25 const val MONTH_START = 1 const val MONTH_END = 12 From bf870397784ebf97c2ffc6e48054741114676e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=B5=E1=86=AB?= =?UTF-8?q?=E1=84=8B=E1=85=AE?= Date: Sat, 26 Apr 2025 15:51:19 +0900 Subject: [PATCH 2/7] =?UTF-8?q?feat:=20=EA=B8=88=EC=95=A1=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=20=ED=8F=AC=EB=A9=A7=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/component/card/DateRoadCourseCard.kt | 1 + .../ui/enroll/EnrollThirdScreen.kt | 4 ++- .../util/view/NumberCommaTransformation.kt | 33 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/org/sopt/teamdateroad/presentation/util/view/NumberCommaTransformation.kt diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadCourseCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadCourseCard.kt index fc1f9c1..53b344b 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadCourseCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadCourseCard.kt @@ -40,6 +40,7 @@ fun DateRoadCourseCard( Row( modifier = modifier .fillMaxWidth() + .padding(end = 16.dp) .height(130.dp) .background(DateRoadTheme.colors.white) .noRippleClickable(onClick = { onClick(course.courseId) }) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt index 58415bb..cc01e8f 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt @@ -17,6 +17,7 @@ import org.sopt.teamdateroad.R import org.sopt.teamdateroad.presentation.ui.component.textfield.DateRoadBasicTextField import org.sopt.teamdateroad.presentation.ui.component.textfield.DateRoadTextArea import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.presentation.util.view.NumberCommaTransformation import org.sopt.teamdateroad.ui.theme.DATEROADTheme @Composable @@ -45,7 +46,8 @@ fun EnrollThirdScreen( onValueChange = { newValue -> if (newValue.all { it.isDigit() }) onCostValueChange(newValue) }, - keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number) + keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number), + visualTransformation = NumberCommaTransformation(), ) Spacer(modifier = Modifier.height(6.dp)) } diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/util/view/NumberCommaTransformation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/view/NumberCommaTransformation.kt new file mode 100644 index 0000000..661612f --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/view/NumberCommaTransformation.kt @@ -0,0 +1,33 @@ +package org.sopt.teamdateroad.presentation.util.view + +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.input.OffsetMapping +import androidx.compose.ui.text.input.TransformedText +import androidx.compose.ui.text.input.VisualTransformation +import java.text.NumberFormat +import java.util.Locale + +class NumberCommaTransformation : VisualTransformation { + + private fun Long?.formatWithComma(): String = + NumberFormat.getNumberInstance(Locale.US).format(this ?: 0) + + override fun filter(text: AnnotatedString): TransformedText { + val newText = AnnotatedString( + text = if (text.text.isEmpty()) "" else text.text.toLongOrNull().formatWithComma() + ) + return TransformedText( + text = newText, + offsetMapping = object : OffsetMapping { + override fun originalToTransformed(offset: Int): Int { + return if (offset != newText.length) newText.length else text.length + + } + + override fun transformedToOriginal(offset: Int): Int { + return text.length + } + } + ) + } +} From 1d43ec550cddc053da5427f11b42482ff964c61f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=B5=E1=86=AB?= =?UTF-8?q?=E1=84=8B=E1=85=AE?= Date: Sat, 26 Apr 2025 16:54:29 +0900 Subject: [PATCH 3/7] =?UTF-8?q?feat:=20=EC=8A=A4=ED=94=8C=EB=9E=98?= =?UTF-8?q?=EC=8B=9C=20=ED=99=94=EB=A9=B4=20=EB=B2=84=ED=8A=BC=20=EA=B8=80?= =?UTF-8?q?=EC=94=A8=20=EC=9C=84=EC=B9=98=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/signin/SignInScreen.kt | 56 +++++++++++++------ 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt index 3ecca34..83ff025 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt @@ -3,10 +3,15 @@ package org.sopt.teamdateroad.presentation.ui.signin import android.content.Context import androidx.compose.foundation.Image 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.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -109,28 +114,43 @@ fun SignInScreen( if (signInUiState.isWebViewOpened) { DateRoadWebView(url = PRIVACY_POLICY_URL, onClose = webViewClose) } else { - Column( + Box( modifier = Modifier .fillMaxSize() .background(DateRoadTheme.colors.purple600), - horizontalAlignment = Alignment.CenterHorizontally + contentAlignment = Alignment.Center, ) { - Spacer(modifier = Modifier.weight(226f)) - Image(painter = painterResource(id = R.drawable.img_splash_logo), contentDescription = null) - Spacer(modifier = Modifier.weight(167f)) - DateRoadKakaoLoginButton( - modifier = Modifier.padding(horizontal = 30.dp), - onClick = onSignInClicked - ) - Spacer(modifier = Modifier.weight(16f)) - Text( - text = "개인정보처리방침", - color = DateRoadTheme.colors.gray200, - style = DateRoadTheme.typography.bodyMed15, - textDecoration = TextDecoration.Underline, - modifier = Modifier.noRippleClickable(onClick = onWebViewClicked) - ) - Spacer(modifier = Modifier.weight(37f)) + Column( + modifier = Modifier + .wrapContentWidth() + .fillMaxHeight(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Spacer(modifier = Modifier.weight(270f)) + Image(painter = painterResource(id = R.drawable.img_splash_logo), contentDescription = null) + Spacer(modifier = Modifier.weight(328f)) + } + Column( + modifier = Modifier + .wrapContentWidth() + .fillMaxHeight(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Spacer(modifier = Modifier.weight(591f)) + DateRoadKakaoLoginButton( + modifier = Modifier.padding(horizontal = 30.dp), + onClick = onSignInClicked + ) + Spacer(modifier = Modifier.height(16.dp)) + Text( + text = "개인정보처리방침", + color = DateRoadTheme.colors.gray200, + style = DateRoadTheme.typography.bodyMed15, + textDecoration = TextDecoration.Underline, + modifier = Modifier.noRippleClickable(onClick = onWebViewClicked) + ) + Spacer(modifier = Modifier.weight(124f)) + } } } } From f7846bc3904531cd443780c3290227c03c4b76bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=B5=E1=86=AB?= =?UTF-8?q?=E1=84=8B=E1=85=AE?= Date: Sat, 26 Apr 2025 18:45:45 +0900 Subject: [PATCH 4/7] =?UTF-8?q?feat:=20=ED=99=88=20=EC=83=81=EB=8B=A8=20?= =?UTF-8?q?=EC=97=AC=EB=B0=B1=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/home/component/HomeTopBar.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt index f94162d..821403e 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt @@ -1,11 +1,14 @@ package org.sopt.teamdateroad.presentation.ui.home.component import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -24,23 +27,26 @@ fun DateRoadHomeTopBar( profileImage: String? = null, onClick: () -> Unit = {} ) { - Row( + Box( modifier = Modifier .fillMaxWidth() + .height(54.dp) .background(Color.Transparent) - .padding(horizontal = 22.dp, vertical = 10.dp), - verticalAlignment = Alignment.CenterVertically + .padding(start = 11.dp,end = 16.dp), ) { Icon( painter = painterResource(id = R.drawable.ic_dateroad_logo), contentDescription = null, - tint = DateRoadTheme.colors.white + tint = DateRoadTheme.colors.white, + modifier = Modifier + .align(Alignment.CenterStart) + .size(54.dp) ) - Spacer(modifier = Modifier.weight(1f)) DateRoadPointTag( text = title, profileImage = profileImage, - onClick = onClick + onClick = onClick, + modifier = Modifier.align(Alignment.CenterEnd) ) } } From d8aa6b85b7c694644a2aaf25e36a88faf09bb8e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=B5=E1=86=AB?= =?UTF-8?q?=E1=84=8B=E1=85=AE?= Date: Mon, 28 Apr 2025 00:15:16 +0900 Subject: [PATCH 5/7] =?UTF-8?q?feat:=20=EB=8D=B0=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?=EC=9D=BC=EC=A0=95=20=EB=B0=8F=20=ED=8C=9D=EC=97=85=20=EC=B0=BD?= =?UTF-8?q?=20=EC=9C=84=EC=B9=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teamdateroad/presentation/ui/timeline/TimelineScreen.kt | 3 ++- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt index a66917b..81a969d 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt @@ -157,12 +157,13 @@ fun TimelineScreen( ) { page -> val date = uiState.timelines[page] val timelineType = TimelineType.getTimelineTypeByIndex(page) + val paddingEnd = if (uiState.timelines.lastIndex == page) 0.dp else 16.dp TimelineCard( timeline = date, timelineType = timelineType, onClick = { navigateToTimelineDetail(timelineType, date.timelineId) }, modifier = Modifier - .padding(end = 16.dp) + .padding(end = paddingEnd) ) } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3def010..37c3be3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -43,7 +43,7 @@ 아직 포인트 사용 내역이 없어요! 다른 커플들의 데이트 코스를 열람해 보세요! 아직 등록된 코스가 없어요! - 아직 연인과의 데이트 일정을 등록하지 않으셨나요? + 아직 연인과의 데이트 일정을 \n등록하지 않으셨나요? 지난 데이트가 없어요! 아직 열람한 코스가 없어요! 아직 등록한 코스가 없어요! From 5b3699a8ac6d842c48f92d99872b31baa637decc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=8C=E1=85=B5=E1=86=AB?= =?UTF-8?q?=E1=84=8B=E1=85=AE?= Date: Tue, 29 Apr 2025 00:07:05 +0900 Subject: [PATCH 6/7] =?UTF-8?q?feat:=20empty=20view=20=EC=A0=84=EB=B6=80?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/component/view/DateRoadEmptyView.kt | 5 +- .../component/PlaceSearchBottomSheet.kt | 55 ++++++++++--------- .../presentation/ui/look/LookScreen.kt | 12 +++- .../ui/mycourse/MyCourseScreen.kt | 44 ++++++++------- .../presentation/ui/past/PastScreen.kt | 7 ++- .../ui/pointhistory/PointHistoryScreen.kt | 52 ++++++++---------- .../presentation/ui/read/ReadScreen.kt | 1 + .../ui/timeline/TimelineScreen.kt | 3 +- 8 files changed, 98 insertions(+), 81 deletions(-) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadEmptyView.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadEmptyView.kt index 459f5bc..0f5a818 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadEmptyView.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadEmptyView.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -30,7 +31,9 @@ fun DateRoadEmptyView( verticalArrangement = Arrangement.Center ) { Image( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .height(383.dp) + .fillMaxWidth(), painter = painterResource(id = emptyViewType.imageRes), contentDescription = null, contentScale = ContentScale.FillWidth diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/PlaceSearchBottomSheet.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/PlaceSearchBottomSheet.kt index 6dcb28a..c8d7253 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/PlaceSearchBottomSheet.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/PlaceSearchBottomSheet.kt @@ -2,7 +2,7 @@ package org.sopt.teamdateroad.presentation.ui.enroll.component import androidx.compose.foundation.Image import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -73,13 +73,13 @@ fun PlaceSearchBottomSheet( .clip(RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)) .background(DateRoadTheme.colors.white) ) { - Spacer(modifier = Modifier.height(23.dp)) + Spacer(modifier = Modifier.height(15.dp)) Row( modifier = Modifier .fillMaxWidth() .height(40.dp) - .padding(start = 25.dp, end = 12.dp), + .padding(start = 16.dp, end = 6.dp), verticalAlignment = Alignment.CenterVertically ) { Text( @@ -100,7 +100,7 @@ fun PlaceSearchBottomSheet( ) } - Spacer(modifier = Modifier.height(22.dp)) + Spacer(modifier = Modifier.height(16.dp)) TextField( value = searchKeyword, @@ -108,7 +108,7 @@ fun PlaceSearchBottomSheet( modifier = Modifier .fillMaxWidth() .height(54.dp) - .padding(start = 14.dp, end = 20.dp), + .padding(horizontal = 14.dp), placeholder = { Text( modifier = Modifier, @@ -147,10 +147,11 @@ fun PlaceSearchBottomSheet( ) ) - Spacer(modifier = Modifier.height(10.dp)) - if (searchPlaceInfos.isNotEmpty()) { LazyColumn(modifier = Modifier.weight(1f)) { + item { + Spacer(modifier = Modifier.height(10.dp)) + } itemsIndexed(searchPlaceInfos) { index: Int, placeInfo: PlaceInfo -> EnrollPlaceSearchItem( keyword = searchKeyword, @@ -166,8 +167,10 @@ fun PlaceSearchBottomSheet( ) } } + item { + Spacer(modifier = Modifier.height(12.dp)) + } } - Spacer(modifier = Modifier.height(12.dp)) } else { EmptyPlaceSearchResult() } @@ -178,26 +181,26 @@ fun PlaceSearchBottomSheet( @Composable private fun EmptyPlaceSearchResult() { - Box( + Column( modifier = Modifier - .fillMaxSize() - .padding(bottom = 70.dp) + .height(472.dp) + .fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, ) { - Column(modifier = Modifier.align(Alignment.Center)) { - Image( - modifier = Modifier - .width(167.dp) - .height(191.dp), - painter = painterResource(R.drawable.img_place_search_no_match), - contentDescription = null - ) - Spacer(modifier = Modifier.height(40.dp)) - Text( - text = stringResource(R.string.enroll_place_search_no_match), - color = DateRoadTheme.colors.gray300, - style = DateRoadTheme.typography.titleBold18 - ) - } + Image( + modifier = Modifier + .width(167.dp) + .height(191.dp), + painter = painterResource(R.drawable.img_place_search_no_match), + contentDescription = null + ) + Spacer(modifier = Modifier.height(38.dp)) + Text( + text = stringResource(R.string.enroll_place_search_no_match), + color = DateRoadTheme.colors.gray300, + style = DateRoadTheme.typography.titleBold18 + ) } } diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookScreen.kt index b29c023..abcf866 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookScreen.kt @@ -215,13 +215,16 @@ fun LookScreen( ) } } - Spacer(modifier = Modifier.height(20.dp)) + Spacer(modifier = Modifier.height(10.dp)) if (lookUiState.courses.isEmpty()) { Box( modifier = Modifier - .fillMaxSize() + .fillMaxSize(), + contentAlignment = Alignment.TopCenter ) { - DateRoadEmptyView(emptyViewType = EmptyViewType.LOOK) + DateRoadEmptyView( + emptyViewType = EmptyViewType.LOOK + ) } } LazyVerticalGrid( @@ -231,6 +234,9 @@ fun LookScreen( horizontalArrangement = Arrangement.spacedBy(12.dp), verticalArrangement = Arrangement.spacedBy(16.dp) ) { + item { + Spacer(modifier = Modifier.height(10.dp)) + } items(lookUiState.courses.size) { index -> LookCourseCard(course = lookUiState.courses[index], onClick = { onCourseCardClicked(lookUiState.courses[index].courseId) }) } diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt index 428fa0b..61ba0a5 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt @@ -3,6 +3,7 @@ package org.sopt.teamdateroad.presentation.ui.mycourse import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn @@ -116,28 +117,33 @@ fun MyCourseScreen( backGroundColor = DateRoadTheme.colors.white, onLeftIconClick = onIconClick ) - LazyColumn { - if (myCourseUiState.courses.isEmpty()) { - item { - DateRoadEmptyView( - emptyViewType = when (myCourseUiState.myCourseType) { - MyCourseType.ENROLL -> EmptyViewType.MY_COURSE_ENROLL - MyCourseType.READ -> EmptyViewType.MY_COURSE_READ + if (myCourseUiState.courses.isEmpty()) { + Column( + modifier = Modifier.fillMaxSize() + ) { + Spacer(modifier = Modifier.weight(60f)) + DateRoadEmptyView( + emptyViewType = when (myCourseUiState.myCourseType) { + MyCourseType.ENROLL -> EmptyViewType.MY_COURSE_ENROLL + MyCourseType.READ -> EmptyViewType.MY_COURSE_READ + }, + ) + Spacer(modifier = Modifier.weight(165f)) + } + } else { + LazyColumn { + items(myCourseUiState.courses) { course -> + DateRoadCourseCard( + course = course, + onClick = { + when (myCourseUiState.myCourseType) { + MyCourseType.ENROLL -> navigateToCourseDetail(course.courseId) + MyCourseType.READ -> navigateToEnroll(course.courseId) + } } ) } } - items(myCourseUiState.courses) { course -> - DateRoadCourseCard( - course = course, - onClick = { - when (myCourseUiState.myCourseType) { - MyCourseType.ENROLL -> navigateToCourseDetail(course.courseId) - MyCourseType.READ -> navigateToEnroll(course.courseId) - } - } - ) - } } } } @@ -150,7 +156,7 @@ fun MyCourseScreenPreview() { padding = PaddingValues(0.dp), myCourseUiState = MyCourseContract.MyCourseUiState( loadState = LoadState.Success, - myCourseType = MyCourseType.READ, + myCourseType = MyCourseType.ENROLL, courses = listOf( Course( courseId = 1, diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastScreen.kt index e5c6ff3..f83302c 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastScreen.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn @@ -93,7 +94,11 @@ fun PastScreen( onLeftIconClick = popBackStack ) if (pastUiState.timelines.isEmpty()) { - DateRoadEmptyView(emptyViewType = EmptyViewType.PAST) + Column(modifier = Modifier.fillMaxSize()) { + Spacer(modifier = Modifier.weight(69f)) + DateRoadEmptyView(emptyViewType = EmptyViewType.PAST) + Spacer(modifier = Modifier.weight(165f)) + } } else { LazyColumn( modifier = Modifier.padding(start = 16.dp, end = 16.dp, top = 6.dp, bottom = 11.dp), diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryScreen.kt index 63aaba2..9fa90ea 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryScreen.kt @@ -1,7 +1,6 @@ package org.sopt.teamdateroad.presentation.ui.pointhistory import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer @@ -29,7 +28,6 @@ import com.google.android.gms.ads.rewarded.RewardedAd import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback import org.sopt.teamdateroad.BuildConfig import org.sopt.teamdateroad.R -import org.sopt.teamdateroad.domain.model.Point import org.sopt.teamdateroad.domain.model.PointHistory import org.sopt.teamdateroad.domain.model.UserPoint import org.sopt.teamdateroad.presentation.type.EmptyViewType @@ -201,32 +199,26 @@ fun PointHistoryScreen( ) } } - LazyColumn { - val pointHistory = when (pointHistoryUiState.pointHistoryTabType) { - PointHistoryTabType.GAINED_HISTORY -> pointHistoryUiState.pointHistory.gained - PointHistoryTabType.USED_HISTORY -> pointHistoryUiState.pointHistory.used - } - if (pointHistory.isEmpty()) { - item { - Box( - modifier = Modifier - .fillParentMaxSize() - ) { - DateRoadEmptyView( - emptyViewType = when (pointHistoryUiState.pointHistoryTabType) { - PointHistoryTabType.USED_HISTORY -> EmptyViewType.POINT_HISTORY_USED_HISTORY - PointHistoryTabType.GAINED_HISTORY -> EmptyViewType.POINT_HISTORY_GAINED_HISTORY - } - ) - } + val pointHistory = when (pointHistoryUiState.pointHistoryTabType) { + PointHistoryTabType.GAINED_HISTORY -> pointHistoryUiState.pointHistory.gained + PointHistoryTabType.USED_HISTORY -> pointHistoryUiState.pointHistory.used + } + if (pointHistory.isEmpty()) { + DateRoadEmptyView( + emptyViewType = when (pointHistoryUiState.pointHistoryTabType) { + PointHistoryTabType.USED_HISTORY -> EmptyViewType.POINT_HISTORY_USED_HISTORY + PointHistoryTabType.GAINED_HISTORY -> EmptyViewType.POINT_HISTORY_GAINED_HISTORY + } + ) + } else { + LazyColumn { + items(pointHistory.size) { index -> + PointHistoryCard(point = pointHistory[index]) + HorizontalDivider( + color = DateRoadTheme.colors.gray100, + thickness = 1.dp + ) } - } - items(pointHistory.size) { index -> - PointHistoryCard(point = pointHistory[index]) - HorizontalDivider( - color = DateRoadTheme.colors.gray100, - thickness = 1.dp - ) } } } @@ -263,9 +255,9 @@ fun PointHistoryPreview() { loadState = LoadState.Success, pointHistory = PointHistory( gained = listOf( - Point(point = "+150", description = "서버의 바다여행", createdAt = "2023.12.31"), - Point(point = "+150", description = "서버의 바다여행", createdAt = "2023.12.31"), - Point(point = "+150", description = "서버의 바다여행", createdAt = "2023.12.31") +// Point(point = "+150", description = "서버의 바다여행", createdAt = "2023.12.31"), +// Point(point = "+150", description = "서버의 바다여행", createdAt = "2023.12.31"), +// Point(point = "+150", description = "서버의 바다여행", createdAt = "2023.12.31") ), used = listOf() ) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadScreen.kt index e817e79..a7230e7 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadScreen.kt @@ -107,6 +107,7 @@ fun ReadScreen( text = stringResource(id = R.string.read_title_empty, readUiState.name), style = DateRoadTheme.typography.titleExtra24 ) + Spacer(modifier = Modifier.height(16.dp)) DateRoadEmptyView(emptyViewType = EmptyViewType.READ) } else { Text( diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt index 81a969d..d5de826 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt @@ -135,7 +135,6 @@ fun TimelineScreen( ) } ) - Spacer(modifier = Modifier.height(52.dp)) Column( modifier = Modifier @@ -143,11 +142,13 @@ fun TimelineScreen( .align(Alignment.CenterHorizontally) ) { if (uiState.timelines.isEmpty()) { + Spacer(modifier = Modifier.height(29.dp)) DateRoadEmptyView( modifier = Modifier.fillMaxWidth(), emptyViewType = EmptyViewType.TIMELINE ) } else { + Spacer(modifier = Modifier.height(52.dp)) HorizontalPager( count = uiState.timelines.size, state = pagerState, From e1760284f8c4aefee0e1a6d3395f18156bbaf68f Mon Sep 17 00:00:00 2001 From: dpcks0509 Date: Tue, 29 Apr 2025 15:00:23 +0900 Subject: [PATCH 7/7] =?UTF-8?q?style:=20ktLint=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/enroll/EnrollThirdScreen.kt | 2 +- .../ui/enroll/component/PlaceSearchBottomSheet.kt | 3 +-- .../presentation/ui/home/component/HomeTopBar.kt | 4 +--- .../presentation/ui/mycourse/MyCourseScreen.kt | 2 +- .../teamdateroad/presentation/ui/signin/SignInScreen.kt | 7 +++---- .../presentation/util/view/NumberCommaTransformation.kt | 1 - 6 files changed, 7 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt index cc01e8f..9eb7f35 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt @@ -47,7 +47,7 @@ fun EnrollThirdScreen( if (newValue.all { it.isDigit() }) onCostValueChange(newValue) }, keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number), - visualTransformation = NumberCommaTransformation(), + visualTransformation = NumberCommaTransformation() ) Spacer(modifier = Modifier.height(6.dp)) } diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/PlaceSearchBottomSheet.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/PlaceSearchBottomSheet.kt index c8d7253..3bb8fdc 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/PlaceSearchBottomSheet.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/PlaceSearchBottomSheet.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row 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 @@ -186,7 +185,7 @@ private fun EmptyPlaceSearchResult() { .height(472.dp) .fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center, + verticalArrangement = Arrangement.Center ) { Image( modifier = Modifier diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt index 821403e..9469f02 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt @@ -3,8 +3,6 @@ package org.sopt.teamdateroad.presentation.ui.home.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding @@ -32,7 +30,7 @@ fun DateRoadHomeTopBar( .fillMaxWidth() .height(54.dp) .background(Color.Transparent) - .padding(start = 11.dp,end = 16.dp), + .padding(start = 11.dp, end = 16.dp) ) { Icon( painter = painterResource(id = R.drawable.ic_dateroad_logo), diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt index 61ba0a5..cddb45e 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt @@ -126,7 +126,7 @@ fun MyCourseScreen( emptyViewType = when (myCourseUiState.myCourseType) { MyCourseType.ENROLL -> EmptyViewType.MY_COURSE_ENROLL MyCourseType.READ -> EmptyViewType.MY_COURSE_READ - }, + } ) Spacer(modifier = Modifier.weight(165f)) } diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt index 83ff025..04b0a26 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt @@ -10,7 +10,6 @@ import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -118,13 +117,13 @@ fun SignInScreen( modifier = Modifier .fillMaxSize() .background(DateRoadTheme.colors.purple600), - contentAlignment = Alignment.Center, + contentAlignment = Alignment.Center ) { Column( modifier = Modifier .wrapContentWidth() .fillMaxHeight(), - horizontalAlignment = Alignment.CenterHorizontally, + horizontalAlignment = Alignment.CenterHorizontally ) { Spacer(modifier = Modifier.weight(270f)) Image(painter = painterResource(id = R.drawable.img_splash_logo), contentDescription = null) @@ -134,7 +133,7 @@ fun SignInScreen( modifier = Modifier .wrapContentWidth() .fillMaxHeight(), - horizontalAlignment = Alignment.CenterHorizontally, + horizontalAlignment = Alignment.CenterHorizontally ) { Spacer(modifier = Modifier.weight(591f)) DateRoadKakaoLoginButton( diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/util/view/NumberCommaTransformation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/view/NumberCommaTransformation.kt index 661612f..40a5aff 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/util/view/NumberCommaTransformation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/view/NumberCommaTransformation.kt @@ -21,7 +21,6 @@ class NumberCommaTransformation : VisualTransformation { offsetMapping = object : OffsetMapping { override fun originalToTransformed(offset: Int): Int { return if (offset != newText.length) newText.length else text.length - } override fun transformedToOriginal(offset: Int): Int {