-
Notifications
You must be signed in to change notification settings - Fork 0
[UI/#95] 로그인, 약관동의 화면 리디자인 변경사항 반영 #96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- 그래픽 이미지 변경 - 컴포넌트 간격 수정
Walkthrough인트로(소개) 화면 및 관련 로직과 파일이 모두 삭제되었습니다. 내비게이션 경로에서 Intro가 제거되고 Login으로 대체되었습니다. 로그인 화면과 약관 동의 화면의 UI 요소(텍스트, 색상, 아이콘 등)가 리디자인 요구사항에 맞게 수정되었습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant SplashScreen
participant MainNavHost
participant LoginScreen
User->>SplashScreen: 앱 실행
SplashScreen->>MainNavHost: navigateToLogin()
MainNavHost->>LoginScreen: Route.Login으로 이동
LoginScreen-->>User: 로그인 UI 표시
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~15–25 minutes Assessment against linked issues
Assessment against linked issues: Out-of-scope changes(해당 변경사항 내에서는 명확하게 범위를 벗어난 코드 변경이 발견되지 않았습니다.) Poem
✨ Finishing Touches
🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🔭 Outside diff range comments (1)
app/src/main/java/com/threegap/bitnagil/MainNavHost.kt (1)
162-169
: 스택 초기화 시popUpTo(0)
사용은 모호함 — 그래프 ID로 명시적 정리 권장
popUpTo(0)
는 구현/버전 별 동작 오해 소지가 있어 유지보수에 불리합니다.navController.graph.id
로 전환하고launchSingleTop
을 함께 설정해 중복 네비게이션을 방지하는 것을 권장합니다.아래처럼 변경 제안드립니다:
- navigator.navController.navigate(Route.Login) { - popUpTo(0) { - inclusive = true - } - } + navigator.navController.navigate(Route.Login) { + launchSingleTop = true + popUpTo(navigator.navController.graph.id) { + inclusive = true + } + }
🧹 Nitpick comments (4)
presentation/src/main/java/com/threegap/bitnagil/presentation/login/LoginScreen.kt (2)
88-101
: 상단/중간 스페이서 퍼센티지 조정: 토큰/디멘션화 고려퍼센티지 값(0.114f, 0.112f)은 피그마 반영으로 보입니다. 다만 자주 쓰이는 간격이면 디자인 토큰/디멘션 리소스로 추출하여 재사용성과 유지보수성을 높이는 것을 권장합니다.
103-109
: 이미지 리소스 교체 및 비율 변경: OK / 콘텐츠 설명 재검토리소스(
login_fomo
) 및 비율(290/305) 반영이 적절합니다. 해당 이미지가 순수 장식 목적이면contentDescription = null
유지가 맞고, 의미가 있다면 문자열 리소스로 설명을 제공하는 것을 권장합니다.presentation/src/main/java/com/threegap/bitnagil/presentation/terms/TermsAgreementScreen.kt (1)
159-159
: 문자열 하드코딩 → stringResource로 이전 권장 (i18n)리디자인 맥락에서 "다음" 변경은 적절합니다. 다만 국제화/번역 대응을 위해 문자열 리소스로 이전해 주세요.
다음과 같이 교체를 권장합니다:
- text = "다음", + text = stringResource(R.string.terms_next),추가로 필요한 import:
import androidx.compose.ui.res.stringResourcestrings.xml에 terms_next 키 추가 여부도 확인 부탁드립니다.
presentation/src/main/java/com/threegap/bitnagil/presentation/terms/component/TermsAgreementItem.kt (1)
52-55
: 아이콘/컬러 업데이트는 적절합니다 — 접근성(터치 타깃/스크린리더) 개선 제안
- 시각적 변경은 요구사항과 합치됩니다.
- 접근성 강화를 위해 다음을 고려해 주세요.
- 최소 터치 타깃 48dp 권장: 현재 Row 높이(40.dp, Line 38)는 권장치 미만입니다. 디자인 허용 시 48.dp로 상향하거나, 최소 터치 타깃 보정 유틸(예: minimum touch target)을 적용해 주세요.
- 스크린리더 친화적 역할/상태 제공: 커스텀 클릭 행이므로 Checkbox 역할/상태를 명시하는 semantics를 추가하면 좋습니다.
예시(개념 코드):
modifier = Modifier // ... 기존 modifier .semantics(mergeDescendants = true) { role = Role.Checkbox // stringResource로의 이전 권장 stateDescription = if (isChecked) "선택됨" else "선택 안 됨" }또한 아이콘이 장식용이라면 BitnagilIcon에서 contentDescription을 null 처리(가능한 경우)하여 중복 낭독을 방지해 주세요. 별도로, "더보기"(Lines 65-74)도 stringResource로의 이전을 권장합니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (10)
core/designsystem/src/main/res/drawable-hdpi/intro_character.png
is excluded by!**/*.png
core/designsystem/src/main/res/drawable-hdpi/login_fomo.png
is excluded by!**/*.png
core/designsystem/src/main/res/drawable-mdpi/intro_character.png
is excluded by!**/*.png
core/designsystem/src/main/res/drawable-mdpi/login_fomo.png
is excluded by!**/*.png
core/designsystem/src/main/res/drawable-xhdpi/intro_character.png
is excluded by!**/*.png
core/designsystem/src/main/res/drawable-xhdpi/login_fomo.png
is excluded by!**/*.png
core/designsystem/src/main/res/drawable-xxhdpi/intro_character.png
is excluded by!**/*.png
core/designsystem/src/main/res/drawable-xxhdpi/login_fomo.png
is excluded by!**/*.png
core/designsystem/src/main/res/drawable-xxxhdpi/intro_character.png
is excluded by!**/*.png
core/designsystem/src/main/res/drawable-xxxhdpi/login_fomo.png
is excluded by!**/*.png
📒 Files selected for processing (18)
app/src/main/java/com/threegap/bitnagil/MainNavHost.kt
(2 hunks)app/src/main/java/com/threegap/bitnagil/Route.kt
(0 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/intro/IntroScreen.kt
(0 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/intro/IntroViewModel.kt
(0 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/intro/model/IntroIntent.kt
(0 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/intro/model/IntroSideEffect.kt
(0 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/intro/model/IntroState.kt
(0 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/login/LoginScreen.kt
(2 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/setting/SettingScreen.kt
(1 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/setting/SettingViewModel.kt
(2 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/setting/model/mvi/SettingSideEffect.kt
(1 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/splash/SplashScreen.kt
(1 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/splash/SplashViewModel.kt
(2 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/splash/model/SplashIntent.kt
(1 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/splash/model/SplashSideEffect.kt
(1 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/terms/TermsAgreementScreen.kt
(1 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/terms/component/TermsAgreementItem.kt
(2 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/terms/component/ToggleAllAgreementsItem.kt
(2 hunks)
💤 Files with no reviewable changes (6)
- app/src/main/java/com/threegap/bitnagil/Route.kt
- presentation/src/main/java/com/threegap/bitnagil/presentation/intro/model/IntroState.kt
- presentation/src/main/java/com/threegap/bitnagil/presentation/intro/model/IntroIntent.kt
- presentation/src/main/java/com/threegap/bitnagil/presentation/intro/model/IntroSideEffect.kt
- presentation/src/main/java/com/threegap/bitnagil/presentation/intro/IntroViewModel.kt
- presentation/src/main/java/com/threegap/bitnagil/presentation/intro/IntroScreen.kt
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-07-23T13:32:26.263Z
Learnt from: l5x5l
PR: YAPP-Github/Bitnagil-Android#41
File: presentation/src/main/java/com/threegap/bitnagil/presentation/mypage/model/MyPageIntent.kt:6-6
Timestamp: 2025-07-23T13:32:26.263Z
Learning: In the Bitnagil Android project's MVI architecture, Intent classes like `LoadMyPageSuccess` are named to represent successful API response results that carry loaded data, not just user actions. This naming convention is used for future API integration where the intent will be triggered when my page data loading succeeds from the server.
Applied to files:
presentation/src/main/java/com/threegap/bitnagil/presentation/splash/model/SplashIntent.kt
🧬 Code Graph Analysis (2)
presentation/src/main/java/com/threegap/bitnagil/presentation/splash/SplashViewModel.kt (1)
presentation/src/main/java/com/threegap/bitnagil/presentation/common/mviviewmodel/MviViewModel.kt (2)
sendSideEffect
(23-23)sendIntent
(30-37)
presentation/src/main/java/com/threegap/bitnagil/presentation/setting/SettingViewModel.kt (1)
presentation/src/main/java/com/threegap/bitnagil/presentation/common/mviviewmodel/MviViewModel.kt (1)
sendSideEffect
(23-23)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: build
🔇 Additional comments (11)
presentation/src/main/java/com/threegap/bitnagil/presentation/setting/model/mvi/SettingSideEffect.kt (1)
6-6
: 리네이밍 일관성 확보 좋습니다Intro 제거 흐름과 맞춰
NavigateToLogin
으로 변경된 점 일관되고 적절합니다.presentation/src/main/java/com/threegap/bitnagil/presentation/splash/model/SplashSideEffect.kt (1)
6-6
: 네비게이션 사이드이펙트 변경 타당Intro 제거에 따라
NavigateToLogin
으로 변경한 점 적절합니다. 스플래시에서의 라우팅 단일화에 도움이 됩니다.presentation/src/main/java/com/threegap/bitnagil/presentation/setting/SettingScreen.kt (1)
42-43
: 백스택 정리 로직 확인 완료SettingScreenContainer의 navigateToLogin 콜백이 popUpTo(0) { inclusive = true } 로 전체 백스택을 정리하고 있으므로, 로그아웃/탈퇴 후 뒤로 가기로 이전 화면으로 돌아가는 문제가 없습니다. 추가 조치가 필요하지 않습니다.
presentation/src/main/java/com/threegap/bitnagil/presentation/splash/SplashViewModel.kt (2)
43-45
: Intro → Login 네비게이션으로의 전환: 일관성 있게 반영됨
NavigateToLogin
인텐트에서 사이드이펙트를 바로 전달하는 패턴이 기존 다른 네비게이션들과 일관됩니다. 별도의 상태 변경 없이null
반환하는 것도 적절합니다.
91-92
: 기본 분기(fallback)를 Login으로 변경: 합리적 선택자동로그인 실패(null)나 알 수 없는 역할에 대해 Login으로 유도하는 기본 분기 처리가 명확합니다. 스플래시-로그인 플로우에 부합합니다.
presentation/src/main/java/com/threegap/bitnagil/presentation/splash/SplashScreen.kt (2)
31-31
: 파라미터 명 변경(navigateToIntro → navigateToLogin): 호출부와의 일관성 확인 필요파일 내에서의 이름 변경은 적절합니다. MainNavHost 호출부도 함께 수정되어 있어 현재 컨텍스트에서는 불일치 없음이 확인됩니다.
39-43
: SideEffect 매핑 Intro → Login: LGTM
SplashSideEffect.NavigateToLogin
처리로 변경되어 뷰모델 변경사항과 일치합니다.app/src/main/java/com/threegap/bitnagil/MainNavHost.kt (1)
35-39
: Splash → Login 네비게이션 및 스택 정리: 적절함
popUpTo<Route.Splash> { inclusive = true }
로 스플래시 제거 후 로그인 진입 플로우가 깔끔하게 정리됩니다.presentation/src/main/java/com/threegap/bitnagil/presentation/login/LoginScreen.kt (1)
79-79
: 이미지 width 비율 조정(290/360): 디자인 반영 OK레이아웃 의도(비율 기반 폭 지정)에 부합합니다. 다른 뷰포트에서도 비율 유지되어 문제 없어 보입니다.
presentation/src/main/java/com/threegap/bitnagil/presentation/terms/component/TermsAgreementItem.kt (1)
9-9
: 필요 import 추가 LGTM아이콘 사이즈 지정(Modifier.size) 사용을 위한 import 추가로 보이며 문제 없습니다.
presentation/src/main/java/com/threegap/bitnagil/presentation/terms/component/ToggleAllAgreementsItem.kt (1)
32-34
: 컬러 토큰 변경 타당 — 다크 모드/명도 대비(AA) 확인 요청팔레트를 오렌지/쿨그레이로 전환한 점은 일관된 리디자인으로 보입니다. 다만 다크 테마에서의 가시성과 텍스트 대비(특히 배경 대비 AA 충족)도 함께 검토해 주세요.
presentation/src/main/java/com/threegap/bitnagil/presentation/login/LoginScreen.kt
Show resolved
Hide resolved
presentation/src/main/java/com/threegap/bitnagil/presentation/setting/SettingViewModel.kt
Show resolved
Hide resolved
presentation/src/main/java/com/threegap/bitnagil/presentation/splash/model/SplashIntent.kt
Show resolved
Hide resolved
.../src/main/java/com/threegap/bitnagil/presentation/terms/component/ToggleAllAgreementsItem.kt
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
깔끔하군요! 머지 진행하시죠!
[ PR Content ]
Related issue
Screenshot 📸
Work Description
To Reviewers 📢
Summary by CodeRabbit
신규 기능 제거
UI 개선
버그 수정