[FEAT/#83] 챌린지 시작 뷰 온보딩 구현 #88
Conversation
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
Walkthrough새로운 챌린지 스타트 화면을 추가합니다. Jetpack Compose를 사용한 UI 화면(ChallengeStartScreen), Hilt 기반의 ViewModel(ChallengeStartViewModel), 그리고 정보 아이콘 벡터 드로어블 리소스를 포함합니다. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In
`@app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt`:
- Around line 45-51: The Column's modifier applies padding(horizontal = 17.dp)
before the Scaffold's paddingValues, which can cause system bars to overlap
content; in the ChallengeStartScreen composable reorder the modifier chain so
paddingValues is applied first (e.g.,
modifier.padding(paddingValues).padding(horizontal = 17.dp).fillMaxSize() or
equivalent) — update the Column's modifier usage to call padding(paddingValues)
before any additional padding.
🧹 Nitpick comments (2)
app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartViewModel.kt (1)
10-11: 빈 함수에 TODO 주석 또는 구현 추가 권장
onNextClick()이 현재 비어있어 static analysis에서 경고가 발생합니다. 온보딩 "다음" 버튼의 목적을 고려할 때, 네비게이션 로직이나 상태 업데이트가 필요해 보입니다.♻️ 제안: TODO 주석 추가 또는 네비게이션 이벤트 구현
`@HiltViewModel` class ChallengeStartViewModel `@Inject` constructor() : ViewModel() { + // TODO: 다음 온보딩 화면으로 네비게이션 로직 구현 fun onNextClick() { } }또는 향후 확장을 위해 네비게이션 이벤트 패턴을 고려해보세요:
`@HiltViewModel` class ChallengeStartViewModel `@Inject` constructor() : ViewModel() { private val _navigateToNext = MutableSharedFlow<Unit>() val navigateToNext: SharedFlow<Unit> = _navigateToNext.asSharedFlow() fun onNextClick() { viewModelScope.launch { _navigateToNext.emit(Unit) } } }app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt (1)
83-99: 아이콘과 텍스트 사이 간격 추가 권장
Icon과Text사이에 간격이 없어 UI가 붙어 보일 수 있습니다.♻️ Spacer 추가 제안
Icon( imageVector = ImageVector.vectorResource(id = R.drawable.ic_challenge_info), contentDescription = null, tint = CherrishTheme.colors.gray600 ) + Spacer(modifier = Modifier.width(4.dp)) + Text( text = "이 챌린지는 설정 시점부터 7일간 진행됩니다.", color = CherrishTheme.colors.gray600, style = CherrishTheme.typography.body3M12 )또는
Row에Arrangement.spacedBy(4.dp)를 사용할 수도 있습니다.
| Column( | ||
| modifier = modifier | ||
| .fillMaxSize() | ||
| .padding(horizontal = 17.dp) | ||
| .padding(paddingValues) | ||
|
|
||
| ) { |
There was a problem hiding this comment.
패딩 적용 순서 수정 필요
paddingValues가 padding(horizontal: 17.dp) 이후에 적용되어 있습니다. 학습된 패턴에 따르면, Scaffold의 paddingValues를 먼저 적용해야 시스템 바(상태바/네비게이션 바)와 콘텐츠가 겹치지 않습니다.
🐛 패딩 순서 수정
Column(
modifier = modifier
.fillMaxSize()
- .padding(horizontal = 17.dp)
.padding(paddingValues)
+ .padding(horizontal = 17.dp)
) {Based on learnings, paddingValues를 root container의 modifier에 먼저 적용한 후 추가 패딩을 적용해야 합니다.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Column( | |
| modifier = modifier | |
| .fillMaxSize() | |
| .padding(horizontal = 17.dp) | |
| .padding(paddingValues) | |
| ) { | |
| Column( | |
| modifier = modifier | |
| .fillMaxSize() | |
| .padding(paddingValues) | |
| .padding(horizontal = 17.dp) | |
| ) { |
🤖 Prompt for AI Agents
In
`@app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt`
around lines 45 - 51, The Column's modifier applies padding(horizontal = 17.dp)
before the Scaffold's paddingValues, which can cause system bars to overlap
content; in the ChallengeStartScreen composable reorder the modifier chain so
paddingValues is applied first (e.g.,
modifier.padding(paddingValues).padding(horizontal = 17.dp).fillMaxSize() or
equivalent) — update the Column's modifier usage to call padding(paddingValues)
before any additional padding.
There was a problem hiding this comment.
@hyeminililo 네, 알겠습니다! 제가 제안한 내용은 이전 PR #41에서의 학습 내용을 기반으로 한 것이었습니다:
"Screen composables that receive a
paddingValues: PaddingValuesparameter from Scaffold must apply it to their root container's modifier (e.g.,.padding(paddingValues)) before applying additional padding"
하지만 현재 코드가 의도적으로 이 순서로 작성된 것이라면 괜찮습니다. 혹시 현재 순서(horizontal padding → paddingValues)를 사용하는 특별한 이유가 있으신가요?
예를 들어:
- 특정 디자인 요구사항
- 테스트 결과 현재 순서가 더 잘 동작함
- 다른 팀 컨벤션
이유를 공유해주시면 향후 리뷰에 참고하도록 하겠습니다! 😊
🧠 Learnings used
Learnt from: nhyeonii
Repo: TEAM-Cherrish/Cherrish-Android PR: 41
File: app/src/main/java/com/cherrish/android/presentation/challenge/ChallengeScreen.kt:30-39
Timestamp: 2026-01-12T19:49:33.128Z
Learning: In the Cherrish-Android codebase, Screen composables that receive a `paddingValues: PaddingValues` parameter from Scaffold must apply it to their root container's modifier (e.g., `.padding(paddingValues)`) before applying additional padding, to avoid layout overlap with system bars.
nhyeonii
left a comment
There was a problem hiding this comment.
고생하셧습니다 말씀드린 패딩 확인해주세요 !

Related issue 🛠
Work Description ✏️
챌린지 시작 뷰 온보딩 부분 구현했습니다. 다음 버튼을 누르면 넘어가도록 구현했습니다 !!
Screenshot 📸
Uncompleted Tasks 😅
To Reviewers 📢
소희언니 것을 많이 참고 했는데 ,,ㅎㅎ 챌린지 시작 뷰 구현했습니다. 빠르게 답변해주세요 ~~! !
Summary by CodeRabbit
새로운 기능
✏️ Tip: You can customize this high-level summary in your review settings.