-
Notifications
You must be signed in to change notification settings - Fork 0
트러블슈팅‐ 로그인 Listener 부재
easyhak edited this page Dec 4, 2024
·
1 revision
커뮤니티 기능을 개발하면서 로그인 여부에 따라 화면의 동작을 제어해야 하는 요구사항이 생겼습니다.
- 커뮤니티 화면: 로그인이 되어 있지 않으면 커뮤니티 기능을 막고 로그인 화면으로 유도
- 세팅 화면: 로그인 상태에 따라 화면의 UI를 변경 각 ViewModel에서는 authRepository를 통해 Firebase Auth를 사용하여 로그인 여부를 확인했습니다
-
authRepository
는 Firebase Auth에서 사용자가 null인지 아닌지를 판단하여 로그인 상태를 제공합니다
발생한 문제
- ViewModel의 상태 초기화
- 세팅 화면에서 로그인 화면으로 이동할 때, 네비게이션 동작으로 세팅 화면이 백스택에서 제거되어 ViewModel이 소멸했습니다.
- 다시 세팅 화면으로 돌아왔을 때 ViewModel이 재생성되면서 로그인 상태를 재확인했습니다.
- 커뮤니티 화면과 세팅 화면의 상태 불일치
- 커뮤니티 화면에서는 로그인 화면으로 이동할 때 세팅 화면을 백스택에서 지우지 않았습니다.
- 이로 인해 세팅 화면의 ViewModel이 유지되었고, 로그인 상태가 최신 상태로 반영되지 않았습니다.
Firebase Auth의 자체 리스너를 활용하여 로그인 상태 변화에 따라 동작을 업데이트하도록 변경했습니다.
Firebase Auth의 AuthStateListener를 사용하여 사용자의 로그인 상태가 변할 때마다 호출되도록 구현. 각 화면(ViewModel)은 Firebase Auth에서 발생하는 상태 변화를 실시간으로 반영할 수 있게 되었습니다.