diff --git a/app/src/main/java/com/cherrish/android/core/designsystem/theme/Color.kt b/app/src/main/java/com/cherrish/android/core/designsystem/theme/Color.kt index 927bb0f50..a0ece2828 100644 --- a/app/src/main/java/com/cherrish/android/core/designsystem/theme/Color.kt +++ b/app/src/main/java/com/cherrish/android/core/designsystem/theme/Color.kt @@ -38,9 +38,9 @@ val green3 = Color(0xFF9AD342) val shadow = Color(0xFF9098A7).copy(alpha = 0.12f) val gradation = Color(0xFFFFFDFD) -val gradation2 = Color(0xFFFAE0E6) +val gradation2 = Color(0xFFFFE0E0) -val graStart = Color(0xFFFFF7f7) +val graStart = Color(0xFFFFEBEB) val graEnd = Color(0xFFFFFDFD) val bottomSheetScrimColor = Color(0x1A464C52) diff --git a/app/src/main/java/com/cherrish/android/presentation/challenge/component/ChallengeMissionProgressCherrygrowth.kt b/app/src/main/java/com/cherrish/android/presentation/challenge/component/ChallengeMissionProgressCherrygrowth.kt index 010d4eb7d..6cb7a0a42 100644 --- a/app/src/main/java/com/cherrish/android/presentation/challenge/component/ChallengeMissionProgressCherrygrowth.kt +++ b/app/src/main/java/com/cherrish/android/presentation/challenge/component/ChallengeMissionProgressCherrygrowth.kt @@ -31,6 +31,7 @@ import kotlinx.collections.immutable.toImmutableList @Composable fun ChallengeMissionProgressCherrygrowth( cherryType: CherryType, + gaugeStep: Int, remainingGuideText: String, challengeProgress: Int, modifier: Modifier = Modifier @@ -86,7 +87,7 @@ fun ChallengeMissionProgressCherrygrowth( CherryGrowthProgressSection( challengeProgress = challengeProgress, - cherryType = cherryType, + gaugeStep = gaugeStep, modifier = Modifier .fillMaxWidth() .padding(horizontal = 18.dp) @@ -121,7 +122,7 @@ private fun CherryGrowthSection( @Composable private fun CherryGrowthProgressSection( challengeProgress: Int, - cherryType: CherryType, + gaugeStep: Int, modifier: Modifier = Modifier ) { Column( @@ -147,7 +148,7 @@ private fun CherryGrowthProgressSection( } CherrishGaugeBar( - currentStep = cherryType.step, + currentStep = gaugeStep, gauges = CherrishGaugeType.entries.toImmutableList() ) @@ -179,6 +180,7 @@ private fun ChallengeMissionProgressCherrygrowthPreview() { } ChallengeMissionProgressCherrygrowth( cherryType = type, + gaugeStep = 0, remainingGuideText = remainingGuide, challengeProgress = progress ) diff --git a/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressScreen.kt b/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressScreen.kt index 98bc3123f..e8ee624cf 100644 --- a/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressScreen.kt +++ b/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressScreen.kt @@ -91,6 +91,7 @@ private fun ChallengeMissionprogressScreen( item { ChallengeMissionProgressCherrygrowth( cherryType = uiState.cherryType, + gaugeStep = uiState.gaugeStep, remainingGuideText = uiState.remainingGuideText, challengeProgress = uiState.progressPercentage ) @@ -162,6 +163,7 @@ private fun ChallengeMissionprogressScreenPreview() { challengeName = "피부 컨디션 챌린지", currentDay = 3, cherryType = CherryType.BBANGBBANG, + gaugeStep = 0, remainingCount = 3, progressPercentage = 25, remainingGuideText = "체리가 크려면 3개의 미션을 수행해야 해요!", diff --git a/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressUiState.kt b/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressUiState.kt index 5b484e278..420446332 100644 --- a/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressUiState.kt +++ b/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressUiState.kt @@ -9,6 +9,7 @@ data class ChallengeMissionProgressUiState( val challengeId: Long, val challengeName: String, val currentDay: Int, + val gaugeStep: Int, val cherryType: CherryType, val remainingCount: Int, val progressPercentage: Int, diff --git a/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressViewModel.kt b/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressViewModel.kt index c4df655bb..2b8eed4e2 100644 --- a/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressViewModel.kt +++ b/app/src/main/java/com/cherrish/android/presentation/challenge/missionprogress/ChallengeMissionProgressViewModel.kt @@ -98,26 +98,34 @@ class ChallengeMissionProgressViewModel @Inject constructor( } private fun ChallengeMissionProgressResponseModel.toUiState(): ChallengeMissionProgressUiState { - val cherryType = CherryType.entries.first { it.step == cherryLevel } + val gaugeStep = cherryLevel.coerceIn(0, 4) + + val stepForCherry = when (cherryLevel) { + 0, 1 -> 1 + else -> cherryLevel + } + + val cherryType = CherryType.entries.firstOrNull { it.step == stepForCherry } + ?: CherryType.MONGRONG + val isMaxLevel = cherryType == CherryType.KKUKKU + val remainingText = if (isMaxLevel) { "챌린지 완료까지 ${remainingRoutinesToNextLevel}개의 미션을 수행해야 해요!" } else { "체리가 크려면 ${remainingRoutinesToNextLevel}개의 미션을 수행해야 해요!" } - val completeButtonText = if (isMaxLevel) { - "챌린지 완료하기" - } else { - "오늘 미션 종료하기" - } + + val completeButtonText = if (isMaxLevel) "챌린지 종료하기" else "오늘 미션 종료하기" return ChallengeMissionProgressUiState( challengeId = challengeId, challengeName = title, currentDay = currentDay, - progressPercentage = progressPercentage, cherryType = cherryType, + gaugeStep = gaugeStep, remainingCount = remainingRoutinesToNextLevel, + progressPercentage = progressPercentage, routines = todayRoutines.map { routine -> ChallengeRoutineUiModel( routineId = routine.routineId, diff --git a/app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt b/app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt index 10ad1037f..e58189b6d 100644 --- a/app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt +++ b/app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt @@ -46,8 +46,8 @@ private fun ChallengeStartScreen( .fillMaxSize() .background(CherrishTheme.colors.gray0) .padding(paddingValues) - .padding(horizontal = 17.dp) - + .padding(horizontal = 17.dp), + horizontalAlignment = Alignment.CenterHorizontally ) { Spacer(modifier = Modifier.weight(98f)) diff --git a/app/src/main/java/com/cherrish/android/presentation/home/HomeScreen.kt b/app/src/main/java/com/cherrish/android/presentation/home/HomeScreen.kt index d2cf341a5..92b93763a 100644 --- a/app/src/main/java/com/cherrish/android/presentation/home/HomeScreen.kt +++ b/app/src/main/java/com/cherrish/android/presentation/home/HomeScreen.kt @@ -43,6 +43,7 @@ fun HomeRoute( is HomeSideEffect.NavigateToChallenge -> { navigateToChallenge() } + is HomeSideEffect.NavigateToCalendar -> { navigateToCalendar(sideEffect.date) } diff --git a/app/src/main/java/com/cherrish/android/presentation/home/HomeViewModel.kt b/app/src/main/java/com/cherrish/android/presentation/home/HomeViewModel.kt index 6b21ef623..dc9c57620 100644 --- a/app/src/main/java/com/cherrish/android/presentation/home/HomeViewModel.kt +++ b/app/src/main/java/com/cherrish/android/presentation/home/HomeViewModel.kt @@ -40,22 +40,26 @@ class HomeViewModel @Inject constructor( _uiState.update { UiState.Loading } homeRepository.getMainDashboard().onSuccess { response -> + val level = response.cherryLevel + val safeIndex = level.coerceIn( + 1, + CherrishGaugeType.entries.lastIndex + ) _uiState.update { UiState.Success( HomeUiState( - currentStep = response.cherryLevel, + currentStep = level, gauges = CherrishGaugeType.entries.toImmutableList(), challengeRate = response.challengeRate, challengeName = response.challengeName, todayDate = response.toTodayDateString(), plans = response.recentProcedures.toImmutableList(), upcomingPlans = response.upcomingProcedures.toImmutableList(), - selectedIndex = (response.cherryLevel - 1) - .coerceIn(0, CherrishGaugeType.entries.size - 1) + selectedIndex = safeIndex ) ) } - }.onLogFailure {} + }.onLogFailure { } } } diff --git a/app/src/main/java/com/cherrish/android/presentation/home/component/ChallengeSection.kt b/app/src/main/java/com/cherrish/android/presentation/home/component/ChallengeSection.kt index aebd11235..002bb9310 100644 --- a/app/src/main/java/com/cherrish/android/presentation/home/component/ChallengeSection.kt +++ b/app/src/main/java/com/cherrish/android/presentation/home/component/ChallengeSection.kt @@ -40,15 +40,17 @@ fun ChallengeSection( gauges: ImmutableList, modifier: Modifier = Modifier, currentStep: Int = 0, - @DrawableRes imageRes: Int? = R.drawable.img_challenge_lv2, + @DrawableRes imageRes: Int? = R.drawable.img_challenge_lv1, onChallengeStartClick: () -> Unit = {}, challengeName: String? = "웰니스 • 마음챙김", challengeRate: Int = 0 ) { + val hasChallenge = !challengeName.isNullOrBlank() + Box( modifier = modifier.fillMaxWidth() ) { - if (currentStep != 0 && imageRes != null) { + if (hasChallenge && imageRes != null) { Image( painter = painterResource(id = imageRes), contentDescription = null, @@ -71,9 +73,9 @@ fun ChallengeSection( Spacer(modifier = Modifier.height(10.dp)) - if (currentStep == 0) { + if (!hasChallenge) { NoChallenge( - currentStep = currentStep, + currentStep = 0, gauges = gauges, onChallengeStartClick = onChallengeStartClick ) @@ -97,8 +99,6 @@ private fun Challenge( challengeRate: Int, modifier: Modifier = Modifier ) { - val safeStep = currentStep.coerceIn(1, gauges.size) - Column( modifier = modifier .fillMaxWidth() @@ -139,7 +139,7 @@ private fun Challenge( Spacer(modifier = Modifier.height(16.dp)) CherrishGaugeBar( - currentStep = safeStep, + currentStep = currentStep, gauges = gauges ) } diff --git a/app/src/main/java/com/cherrish/android/presentation/home/type/CherrishGaugeType.kt b/app/src/main/java/com/cherrish/android/presentation/home/type/CherrishGaugeType.kt index 049fc7619..43af98131 100644 --- a/app/src/main/java/com/cherrish/android/presentation/home/type/CherrishGaugeType.kt +++ b/app/src/main/java/com/cherrish/android/presentation/home/type/CherrishGaugeType.kt @@ -5,9 +5,9 @@ import com.cherrish.android.R enum class CherrishGaugeType( val step: Int, - @DrawableRes val image: Int? + @DrawableRes val image: Int ) { - LEVEL0(step = 0, image = null), + LEVEL0(step = 0, image = R.drawable.img_home_lv1), LEVEL1(step = 1, image = R.drawable.img_home_lv1), LEVEL2(step = 2, image = R.drawable.img_home_lv2), LEVEL3(step = 3, image = R.drawable.img_home_lv3), diff --git a/app/src/main/java/com/cherrish/android/presentation/mypage/MyPageScreen.kt b/app/src/main/java/com/cherrish/android/presentation/mypage/MyPageScreen.kt index 0a4491ff1..9393cb07c 100644 --- a/app/src/main/java/com/cherrish/android/presentation/mypage/MyPageScreen.kt +++ b/app/src/main/java/com/cherrish/android/presentation/mypage/MyPageScreen.kt @@ -87,6 +87,7 @@ private fun MyPageScreen( Text( text = "앗! 아직 준비중이에요.", color = CherrishTheme.colors.gray600, + style = CherrishTheme.typography.body1M14, modifier = Modifier.padding(top = 20.dp) ) diff --git a/app/src/main/java/com/cherrish/android/presentation/mypage/component/MyPageHeader.kt b/app/src/main/java/com/cherrish/android/presentation/mypage/component/MyPageHeader.kt index 23a2d67c2..b5b1ec796 100644 --- a/app/src/main/java/com/cherrish/android/presentation/mypage/component/MyPageHeader.kt +++ b/app/src/main/java/com/cherrish/android/presentation/mypage/component/MyPageHeader.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -33,7 +34,9 @@ fun MyPageHeader( Image( painter = painterResource(id = profileIcon), contentDescription = null, - modifier = Modifier.clip(CircleShape) + modifier = Modifier + .size(48.dp) + .clip(CircleShape) ) Column( diff --git a/app/src/main/java/com/cherrish/android/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/cherrish/android/presentation/splash/SplashViewModel.kt index 629282f68..a62445dcd 100644 --- a/app/src/main/java/com/cherrish/android/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/cherrish/android/presentation/splash/SplashViewModel.kt @@ -21,11 +21,12 @@ class SplashViewModel @Inject constructor( viewModelScope.launch { val id = tokenManager.getId() _sideEffect.emit( - if (id != null) { - SplashSideEffect.NavigateToHome - } else { - SplashSideEffect.NavigateToOnboarding - } + SplashSideEffect.NavigateToOnboarding +// if (id != null) { +// SplashSideEffect.NavigateToHome +// } else { +// SplashSideEffect.NavigateToOnboarding +// } ) } }