-
Notifications
You must be signed in to change notification settings - Fork 0
[Fix/#77] 로그인 관련 문제사항 수정 #79
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
- navigateToHomeAndClearStack 메소드를 사용하도록 수정 - 이동 시 모든 백스택을 제거하도록 설정
- 로그인 취소 시 의도적인 취소라 판단하여 취소 분기 제거 - 카카오 계정 로그인 sideEffect 제거
Walkthrough로그인, 온보딩, 스플래시 화면에서 홈으로 이동하는 네비게이션 콜백이 중복된 람다에서 Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Splash/Login/OnBoardingScreen
participant MainNavigator
participant NavController
User->>Splash/Login/OnBoardingScreen: 화면 진입/로그인 성공
Splash/Login/OnBoardingScreen->>MainNavigator: navigateToHomeAndClearStack()
MainNavigator->>NavController: navigate(Route.Home, popUpTo root, inclusive)
NavController-->>MainNavigator: 스택 클리어 후 Home 이동
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~15–20 minutes Assessment against linked issues
Assessment against linked issues: Out-of-scope changes(해당 변경사항 중 요구사항과 무관한 기능적 코드 변경은 발견되지 않았습니다.) Suggested labels
Suggested reviewers
Poem
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. ✨ 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: 0
🧹 Nitpick comments (1)
app/src/main/java/com/threegap/bitnagil/MainNavHost.kt (1)
159-165
: 네비게이션 로직 일관성을 위한 추가 리팩터링 제안Setting 화면의
navigateToIntro
콜백에서 여전히 인라인으로popUpTo(0) { inclusive = true }
로직을 사용하고 있습니다. 일관성을 위해 이 부분도 중앙화된 메서드를 사용하거나, 별도의navigateToIntroAndClearStack
메서드를 만드는 것을 고려해보세요.다음과 같이 수정할 수 있습니다:
navigateToIntro = { - navigator.navController.navigate(Route.Intro) { - popUpTo(0) { - inclusive = true - } - } + navigator.navigateToIntroAndClearStack() },MainNavigator에 해당 메서드를 추가:
internal fun navigateToIntroAndClearStack() = navController.navigate(Route.Intro) { popUpTo(0) { inclusive = true } }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (8)
app/src/main/java/com/threegap/bitnagil/MainNavHost.kt
(3 hunks)app/src/main/java/com/threegap/bitnagil/MainNavigator.kt
(1 hunks)data/src/main/java/com/threegap/bitnagil/data/auth/mapper/AuthMapper.kt
(1 hunks)domain/src/main/java/com/threegap/bitnagil/domain/auth/model/UserRole.kt
(1 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/intro/IntroScreen.kt
(3 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/login/LoginScreen.kt
(3 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/login/LoginViewModel.kt
(1 hunks)presentation/src/main/java/com/threegap/bitnagil/presentation/login/model/LoginSideEffect.kt
(0 hunks)
💤 Files with no reviewable changes (1)
- presentation/src/main/java/com/threegap/bitnagil/presentation/login/model/LoginSideEffect.kt
👮 Files not reviewed due to content moderation or server errors (2)
- app/src/main/java/com/threegap/bitnagil/MainNavigator.kt
- app/src/main/java/com/threegap/bitnagil/MainNavHost.kt
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: in the bitnagil android project's mvi architecture, intent classes like `loadmypagesuccess` are name...
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/login/LoginViewModel.kt
🔇 Additional comments (29)
domain/src/main/java/com/threegap/bitnagil/domain/auth/model/UserRole.kt (1)
11-11
: 메서드 이름 개선이 적절합니다.
from
에서fromString
으로 메서드 이름을 변경한 것은 메서드의 기능을 더 명확하게 표현하며, 코드 가독성을 향상시킵니다.data/src/main/java/com/threegap/bitnagil/data/auth/mapper/AuthMapper.kt (2)
14-14
: 도메인 모델 변경사항과 일관성 있게 업데이트되었습니다.
UserRole.fromString
메서드 호출로 정확히 업데이트되어 도메인 레이어의 메서드 이름 변경과 일치합니다.
10-15
: PR 목표와 제공된 변경사항 간의 불일치가 있습니다.PR 설명에서는 카카오 로그인 취소 시 무한 루프 문제와 네비게이션 스택 관리 문제를 해결한다고 명시되어 있으나, 제공된 파일들은 단순한 메서드 이름 변경만 포함하고 있습니다. 실제 로그인 관련 버그 수정 코드가 다른 파일에 있는지 확인이 필요합니다.
#!/bin/bash # 설명: 로그인 관련 변경사항과 네비게이션 스택 관리 코드 검색 # 예상 결과: 카카오 로그인 취소 처리 및 네비게이션 스택 관리 관련 코드 발견 echo "=== 카카오 로그인 관련 코드 검색 ===" rg -i "kakao|login" --type kotlin -A 3 -B 3 echo -e "\n=== 네비게이션 스택 관리 관련 코드 검색 ===" rg -i "navigateToHomeAndClearStack|clearStack|popBackStack" --type kotlin -A 3 -B 3 echo -e "\n=== 무한 루프 방지 관련 코드 검색 ===" rg -i "infinite|loop|cancel" --type kotlin -A 3 -B 3Likely an incorrect or invalid review comment.
app/src/main/java/com/threegap/bitnagil/MainNavigator.kt (3)
13-18
: 네비게이션 스택 정리 로직이 잘 구현되었습니다.
popUpTo(0) { inclusive = true }
를 사용하여 전체 백스택을 정리하는 로직이 올바르게 구현되어 있습니다. 이는 카카오 로그인 취소 시 무한 루프 문제와 의도하지 않은 네비게이션 흐름을 해결하는 데 도움이 될 것입니다. 메서드를internal
로 선언한 것도 적절한 가시성 제어입니다.
13-18
: 로그인 관련 네비게이션 문제 해결을 위한 중앙화된 네비게이션 메서드 추가새로운
navigateToHomeAndClearStack
메서드가 홈 화면으로의 이동과 전체 네비게이션 스택 정리를 중앙화했습니다.popUpTo(0) { inclusive = true }
를 사용하여 모든 이전 화면을 스택에서 제거함으로써 카카오 로그인 취소 시 무한 루프 문제와 홈에서 로그인 화면으로의 의도치 않은 뒤로 가기 문제를 해결합니다.
13-18
: 네비게이션 스택 관리 로직이 올바르게 구현되었습니다.새로 추가된
navigateToHomeAndClearStack
함수는 홈으로 이동하면서 전체 백스택을 정리하는 로직을 중앙화했습니다.popUpTo(0) { inclusive = true }
를 사용해 루트까지 포함하여 모든 이전 목적지를 제거하므로, 로그인 화면으로의 의도하지 않은 백 네비게이션을 효과적으로 방지할 수 있습니다.app/src/main/java/com/threegap/bitnagil/MainNavHost.kt (7)
41-41
: 코드 중복 제거가 잘 이루어졌습니다.인라인 람다를 메서드 참조로 변경하여 네비게이션 로직이 중앙화되었습니다. 이는 코드 중복을 제거하고 일관된 네비게이션 동작을 보장합니다.
53-53
: 로그인 플로우 개선이 효과적입니다.로그인 화면에서 홈으로 이동하는 네비게이션 로직을 중앙화된 메서드로 변경한 것이 PR 목표에 부합합니다. 이는 카카오 로그인 취소 시 발생하는 무한 루프 문제 해결에 직접적으로 기여할 것입니다.
183-183
: 온보딩 화면 네비게이션 통합이 완료되었습니다.온보딩 화면에서도 동일한 메서드 참조를 사용하여 네비게이션 로직 통합이 완료되었습니다. 이로써 모든 주요 화면에서 일관된 스택 관리가 이루어집니다.
41-41
: 스플래시에서 홈으로의 네비게이션 로직 개선인라인 람다에서 중앙화된 메서드 참조로 변경하여 네비게이션 스택 관리를 일원화했습니다. 이는 코드 중복을 제거하고 일관된 네비게이션 동작을 보장합니다.
53-53
: 로그인에서 홈으로의 네비게이션 로직 개선중앙화된
navigateToHomeAndClearStack
메서드 사용으로 카카오 로그인 취소 시 발생하던 무한 루프 문제와 네비게이션 스택 관리 문제를 해결했습니다. 이제 로그인 완료 후 홈 화면에서 뒤로 가기로 로그인 화면에 접근할 수 없습니다.
183-183
: 온보딩에서 홈으로의 네비게이션 로직 개선온보딩 완료 후 홈 화면으로 이동할 때도 동일한 중앙화된 네비게이션 로직을 사용하여 일관성을 유지하고 의도치 않은 뒤로 가기 네비게이션을 방지합니다.
41-41
: 중앙화된 네비게이션 로직으로 일관성이 개선되었습니다.스플래시, 로그인, 온보딩 화면에서 홈으로 이동하는 네비게이션 콜백이
navigator::navigateToHomeAndClearStack
메서드 참조로 통일되어 코드 중복이 제거되고 일관된 네비게이션 동작을 보장합니다. 이는 PR 목표인 로그인 관련 네비게이션 문제 해결에 기여할 것입니다.Also applies to: 53-53, 183-183
presentation/src/main/java/com/threegap/bitnagil/presentation/intro/IntroScreen.kt (6)
13-13
: 적절한 임포트 추가
width
모디파이어를 사용하기 위한 임포트가 적절히 추가되었습니다.
60-63
: 반응형 UI를 위한 적절한 상수 정의화면 너비 계산과 너비 비율 상수 정의가 적절합니다. Figma 디자인 대응을 위한 반응형 레이아웃 개선으로 보입니다.
72-72
: 수직 간격 조정 확인됨상단 스페이서 높이를 7.48%에서 10.5%로 증가시켜 디자인 명세에 맞춰 조정한 것으로 보입니다.
79-81
: 텍스트 레이아웃 개선텍스트에 명시적인 높이(60.dp)를 설정하면서 전체 너비를 유지하도록 수정되었습니다. 일관된 레이아웃을 위한 좋은 변경입니다.
84-84
: 간격 비율 조정 확인텍스트 아래 스페이서를 15.1%에서 13.6%로 줄여 전체적인 간격 균형을 맞춘 것으로 보입니다.
91-91
: 반응형 이미지 크기 적용고정된 50.dp 패딩에서 화면 너비 기반의 동적 너비로 변경하여 다양한 화면 크기에 대응할 수 있게 개선되었습니다.
presentation/src/main/java/com/threegap/bitnagil/presentation/login/LoginScreen.kt (6)
15-15
: 적절한 임포트 추가
width
모디파이어 사용을 위한 임포트가 추가되었습니다.
76-79
: 일관된 반응형 UI 구현IntroScreen과 동일한 방식으로 화면 너비 계산 및 너비 비율 상수를 정의하여 일관성 있는 반응형 UI를 구현했습니다.
88-88
: 디자인 명세 반영된 간격 조정상단 스페이서 높이를 IntroScreen과 동일하게 10.5%로 조정하여 화면 간 일관성을 유지했습니다.
95-97
: 텍스트 레이아웃 일관성 개선환영 텍스트에 60.dp 고정 높이를 설정하여 IntroScreen과 일관된 레이아웃을 적용했습니다.
100-100
: 간격 비율 통일텍스트 하단 스페이서를 IntroScreen과 동일한 13.6%로 설정하여 화면 간 일관성을 확보했습니다.
107-107
: 반응형 이미지 크기 일관성 적용IntroScreen과 동일한 방식으로 화면 너비 기반 동적 크기 조정을 적용하여 일관된 반응형 디자인을 구현했습니다.
presentation/src/main/java/com/threegap/bitnagil/presentation/login/LoginViewModel.kt (4)
48-50
: 카카오 로그인 무한 루프 문제 해결
KakaoTalkLoginCancel
처리에서RequestKakaoAccountLogin
사이드 이펙트 발송을 제거하여 PR 목표에서 언급된 무한 루프 문제를 해결했습니다. 이제 사용자가 카카오 로그인을 취소하면 단순히 로딩 상태만 false로 변경됩니다.
57-71
: 카카오 로그인 에러 처리 단순화특정
ClientError
처리와 관련 로깅을 제거하여 에러 처리 로직을 단순화했습니다. 이는 카카오 로그인 취소 시 발생하던 복잡한 분기 처리를 제거하여 더 안정적인 흐름을 만듭니다.
83-85
: 일반화된 에러 처리로 개선
BitnagilError
특정 처리를 제거하고 일반적인 에러 로깅으로 단순화했습니다. 이는 에러 처리를 더 일관성 있게 만들어 유지보수성을 향상시킵니다.
19-19
:savedStateHandle
프로퍼티 제거는 의도된 변경이며 문제 없습니다
다른 ViewModel들과 동일하게, LoginViewModel에서는savedStateHandle
를 클래스 내부에서 직접 참조하지 않으므로private val
프로퍼티 선언을 제거하고 생성자 파라미터로만 전달한 것은 적절합니다. 외부에서 이 프로퍼티에 접근하는 코드도 존재하지 않으므로 아키텍처상 영향도 없습니다.
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
Refactor
Bug Fixes
Style
Chores