Skip to content

[Fix] 온보딩 QA 반영#184

Merged
nahy-512 merged 7 commits intodevelopfrom
fix/#182-onboarding-qa
Jan 23, 2026
Merged

[Fix] 온보딩 QA 반영#184
nahy-512 merged 7 commits intodevelopfrom
fix/#182-onboarding-qa

Conversation

@ckals413
Copy link
Contributor

@ckals413 ckals413 commented Jan 23, 2026

📮 관련 이슈

📌 작업 내용

  • 스플래시 옆에 블랙마진이 있는데, 확인해주세요.
  • 닉네임 확인 버튼 - 그라디언트가 아니고 primary 400입니다
  • -닉네임 화면 어떤 이름으로 불러드릴까요 텍스트 자간 안들어가있어요
  • 온보딩 첫 선택 부분 동그라미 있는 부분 블랙 배경 있어요
  • (중요) 다음 버튼 활성화 안 됐는데 리플이 들어가 있어요
  • 모달 테두리 제거

📸 스크린샷

스크린샷
Screen_Recording_20260123_141630_Flint.1.mp4

Summary by CodeRabbit

릴리스 노트

  • UI/스타일 개선

    • 모달 배경의 그림자 제거로 더 평평한 디자인 적용
    • 온보딩 헤더 구조 재정비 및 하단 페이드 효과 추가
    • 버튼 스타일 통일 및 가로 패딩 조정
    • 스플래시 애니메이션 스케일링 최적화
  • 기능 개선

    • 선택된 콘텐츠 표시영역 자동 좌측 스크롤 추가
    • 닉네임 확인 컨트롤 UI를 클릭형 토글로 개선
  • 기타

    • 검색 입력 필드를 헤더 내로 배치하여 접근성 향상

✏️ Tip: You can customize this high-level summary in your review settings.

@ckals413 ckals413 self-assigned this Jan 23, 2026
@ckals413 ckals413 requested a review from a team as a code owner January 23, 2026 05:40
@ckals413 ckals413 added the Fix 🐛 버그, UI 오류, 오타, 명세와의 불일치 등을 수정 label Jan 23, 2026
@ckals413 ckals413 linked an issue Jan 23, 2026 that may be closed by this pull request
5 tasks
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 23, 2026

📝 Walkthrough

Walkthrough

모달 그림자 제거 및 테마 색상 적용, 온보딩 화면들에서 헤더 구조와 페이드 효과 추가, 선택 항목 LazyRow 도입, 여러 화면에서 FlintBasicButtonFlintLargeButton으로 교체하고 버튼 패딩/enable 로직을 조정, Splash의 Lottie에 ContentScale 추가.

Changes

Cohort / File(s) 요약
모달 스타일 업데이트
app/src/main/java/com/flint/core/designsystem/component/modal/FlintBasicModal.kt
모달 배경의 shadow modifier 제거(고정 elevation/ambient/spot 색상 제거), preview를 FlintTheme 범위로 감싸고 배경/텍스트 색상에 FlintTheme.colors.white 사용으로 테마 일치
온보딩 콘텐츠 화면 리팩토링
app/src/main/java/com/flint/presentation/onboarding/OnboardingContentScreen.kt
sticky 헤더를 Box로 래핑하고 zIndex 추가, 내부 Column 유지, 헤더 하단에 수직 그라디언트(페이드) 추가, 선택 항목 LazyRow 도입(자동 좌측 스크롤), 검색 필드 배치 이동
온보딩 버튼 교체 (여러 화면)
app/src/main/java/com/flint/presentation/onboarding/OnboardingDoneScreen.kt, .../OnboardingOttScreen.kt, .../OnboardingProfileScreen.kt
여러 화면에서 FlintBasicButtonFlintLargeButton으로 교체(기존 contentPadding 제거, enabled 파라미터 추가), 버튼 수평 패딩 20.dp → 16.dp 조정, 프로필 화면에서는 닉네임 확인 버튼을 커스텀 Box 클릭 컨트롤로 구현
스플래시 애니메이션 조정
app/src/main/java/com/flint/presentation/splash/SplashScreen.kt
ContentScale import 추가 및 LottieAnimation(..., contentScale = ContentScale.Crop) 적용, 설명용 FIXME 주석 제거

Sequence Diagram(s)

(생략 — 변경이 UI 구성/스타일 중심이며 새 다중 컴포넌트 시퀀스 흐름 시각화 조건을 만족하지 않습니다.)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

📱 UI

Suggested reviewers

  • nahy-512
  • kimjw2003

Poem

🐰 헤더 위에 은은한 페이드 피어나고,
버튼들은 새 옷으로 반짝이네,
그림자는 사라졌고 테마가 반겨주니,
온보딩 길가에 햇살이 한 줄기 비쳐,
우리 코드에도 토끼발짝 축하춤! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목은 주요 변경 사항과 관련이 있으며, 온보딩 QA 반영이라는 핵심 작업 내용을 명확히 전달합니다.
Description check ✅ Passed PR 설명은 필수 템플릿 섹션(관련 이슈, 작업 내용, 스크린샷)을 포함하고 있으며, 완료된 작업 항목들을 체계적으로 나열하고 있습니다.
Linked Issues check ✅ Passed PR의 코드 변경사항이 이슈 #182의 모든 주요 요구사항을 충족합니다: 스플래시 마진 제거(ContentScale.Crop), 닉네임 확인 버튼 스타일 변경, 모달 테두리 제거, FlintLargeButton 추가로 활성화 상태 구분.
Out of Scope Changes check ✅ Passed 모든 변경사항이 이슈 #182 범위 내에 있습니다. FlintBasicButton에서 FlintLargeButton으로의 마이그레이션, 모달 스타일 조정, 스플래시 컨텐츠 스케일링은 모두 QA 피드백 해결을 위한 것입니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@app/src/main/java/com/flint/presentation/onboarding/OnboardingDoneScreen.kt`:
- Around line 111-119: The FlintLargeButton call is missing the enabled
parameter so ripple remains active even when state = FlintButtonState.Disable;
update the call to pass enabled = !isLoading (so enabled is false when isLoading
is true), and clean up formatting by removing the extra blank line and trailing
space before the closing parenthesis after the modifier; refer to the
FlintLargeButton invocation and the isLoading/state parameters to make this
change.
🧹 Nitpick comments (6)
app/src/main/java/com/flint/presentation/onboarding/OnboardingOttScreen.kt (1)

104-113: onClick 내부의 조건문이 불필요합니다.

enabled = ottUiState.canProceed가 설정되어 있으므로, 버튼이 비활성화되면 onClick이 호출되지 않습니다. 따라서 onClick 람다 내부의 if (ottUiState.canProceed) 조건은 중복됩니다.

또한, 112번 줄의 빈 줄은 제거하는 것이 좋습니다.

♻️ 제안된 수정
         FlintLargeButton(
             text = "다음",
             state = if (ottUiState.canProceed) FlintButtonState.Able else FlintButtonState.Disable,
-            onClick = {if (ottUiState.canProceed) onNextClick() },
+            onClick = onNextClick,
             enabled = ottUiState.canProceed,
             modifier = Modifier
                 .fillMaxWidth()
                 .padding(horizontal = 16.dp, vertical = 20.dp),
-
-            )
+        )
app/src/main/java/com/flint/presentation/splash/SplashScreen.kt (1)

30-36: 잠재적인 이중 네비게이션 이슈 확인 필요

현재 navigateToLogin()이 두 번 호출될 수 있는 구조입니다:

  1. SplashScreenonAnimationFinished 콜백 (애니메이션 완료 시)
  2. LaunchedEffect의 2초 딜레이 후 호출

애니메이션이 2초 이내에 완료되면 네비게이션이 중복 실행될 수 있습니다. 이번 PR 범위는 아니지만, 향후 안정성을 위해 타이머 기반 로직 또는 애니메이션 콜백 중 하나만 사용하는 것을 권장합니다.

♻️ 개선 제안
 `@Composable`
 fun SplashRoute(
     paddingValues: PaddingValues,
     navigateToLogin: () -> Unit,
     navigateToHome: () -> Unit,
     viewModel: SplashViewModel = hiltViewModel(),
 ) {
+    var hasNavigated by remember { mutableStateOf(false) }
+    val safeNavigate: () -> Unit = {
+        if (!hasNavigated) {
+            hasNavigated = true
+            navigateToLogin()
+        }
+    }
     SplashScreen(
-        onAnimationFinished = navigateToLogin,
+        onAnimationFinished = safeNavigate,
     )
     LaunchedEffect(Unit) {
         delay(2000)
-        navigateToLogin()
+        safeNavigate()
     }
 }
app/src/main/java/com/flint/presentation/onboarding/OnboardingProfileScreen.kt (1)

168-188: 접근성 및 코드 가독성 개선 제안

  1. 접근성: Box + clickable은 버튼 시맨틱스(role)가 없어 스크린 리더 사용자에게 버튼으로 인식되지 않을 수 있습니다.

  2. 조건 중복: isValid && isFormatValid 조건이 4번 반복됩니다. 가독성을 위해 로컬 변수로 추출하는 것을 권장합니다.

♻️ 개선 제안
+                    val isButtonEnabled = isValid && isFormatValid
                     Box(
                         modifier = Modifier
                             .fillMaxHeight()
                             .clip(RoundedCornerShape(8.dp))
                             .background(
-                                if (isValid && isFormatValid) FlintTheme.colors.primary400
+                                if (isButtonEnabled) FlintTheme.colors.primary400
                                 else FlintTheme.colors.gray700
                             )
-                            .clickable(enabled = isValid && isFormatValid) {
+                            .clickable(
+                                enabled = isButtonEnabled,
+                                role = androidx.compose.ui.semantics.Role.Button,
+                            ) {
                                 keyboardController?.hide()
                                 onCheckNickname()
                             }
                             .padding(horizontal = 16.dp, vertical = 10.dp),
                         contentAlignment = Alignment.Center,
                     ) {
                         Text(
                             text = "확인",
-                            color = if (isValid && isFormatValid) FlintTheme.colors.white else FlintTheme.colors.gray400,
-                            style = if (isValid && isFormatValid) FlintTheme.typography.body1Sb16 else FlintTheme.typography.body1M16,
+                            color = if (isButtonEnabled) FlintTheme.colors.white else FlintTheme.colors.gray400,
+                            style = if (isButtonEnabled) FlintTheme.typography.body1Sb16 else FlintTheme.typography.body1M16,
                         )
                     }
app/src/main/java/com/flint/presentation/onboarding/OnboardingContentScreen.kt (3)

41-43: 사용하지 않는 import를 제거하세요.

FlintBasicButtonFlintLargeButton으로 교체되었으나, line 41의 FlintBasicButton import가 여전히 남아있습니다.

♻️ 제안된 수정
-import com.flint.core.designsystem.component.button.FlintBasicButton
 import com.flint.core.designsystem.component.button.FlintButtonState
 import com.flint.core.designsystem.component.button.FlintLargeButton

181-184: Arrangement.spacedBy(0.dp)는 기본값이므로 생략 가능합니다.

LazyRow의 기본 horizontalArrangement는 이미 간격 없이 배치되므로, 이 속성을 명시적으로 지정할 필요가 없습니다.

♻️ 제안된 수정
 LazyRow(
     state = lazyListState,
-    horizontalArrangement = Arrangement.spacedBy(0.dp),
 ) {

274-283: 비활성화 버튼의 ripple 효과 수정이 잘 적용되었습니다.

enabled 파라미터를 통해 PR 목표인 비활성화된 "다음" 버튼의 ripple 효과 문제가 해결되었습니다.

다만, onClick 내부의 canProceed 조건 검사는 enabled = contentUiState.canProceed로 이미 처리되므로 중복입니다. 또한 line 282-283의 포맷팅이 다소 비정상적입니다.

♻️ 제안된 정리
 FlintLargeButton(
     text = "다음",
     state = if (contentUiState.canProceed) FlintButtonState.Able else FlintButtonState.Disable,
-    onClick = { if (contentUiState.canProceed) { onNextClick() } },
+    onClick = onNextClick,
     enabled = contentUiState.canProceed,
     modifier = Modifier
         .fillMaxWidth()
         .padding(horizontal = 16.dp, vertical = 20.dp),
-
-    )
+)

Copy link
Contributor

@giovannijunseokim giovannijunseokim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해결된거죠? Approve

Copy link
Contributor

@nahy-512 nahy-512 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굿

@nahy-512 nahy-512 merged commit 3b677ca into develop Jan 23, 2026
2 checks passed
@nahy-512 nahy-512 deleted the fix/#182-onboarding-qa branch January 23, 2026 08:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Fix 🐛 버그, UI 오류, 오타, 명세와의 불일치 등을 수정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Fix] 온보딩 QA 반영

3 participants

Comments