어떤 버그인가요?
네트워크가 없는 상태로 앱을 실행하면 스플래시 화면에서 멈춥니다. 메인 화면도, 로그인 화면도 뜨지 않습니다.
어떤 상황에서 발생한 버그인가요?
- Given: 로그인된 기기에서 앱을 완전히 종료
- When: 비행기 모드로 앱 실행
- Then: 스플래시가 유지되고 다음 화면으로 넘어가지 않음
라우팅이 업데이트 확인 성공 경로에만 걸려 있습니다.
MainActivity.onCreate()는 checkForUpdate()만 호출하고, performRouting()은 updateCheckResult 옵저버에서 실행
MainViewModel.checkForUpdate()의 onFailure는 Timber.e만 남기고 LiveData에 값을 넣지 않아 옵저버가 실행되지 않음
AppUpdateRepositoryImpl.getUpdateInfo()가 fetchAndActivate().await()를 runCatching으로 감싸고, CheckForUpdateUseCase가 mapCatching으로 실패를 전달
isLoading은 proceedToContent(), navigateToLogin()에서만 false가 되고 둘 다 performRouting() 이후에 호출
예상 결과
업데이트 확인이 실패해도 라우팅이 진행되어 로딩 화면이 끝나고 다음 화면이 결정됩니다.
작업 범위
- 업데이트 확인 실패 경로에서도 라우팅 진행 (Remote Config
remote_config_defaults 기본값 활용 또는 실패 이벤트 처리, 방식은 PR에서 결정)
- 오프라인에서 강제 업데이트 차단이 동작하지 않는 트레이드오프 명시
- 비행기 모드 실행 시 로딩 화면이 끝나는지 확인
- 온라인에서 선택/강제 업데이트 동작 회귀 확인
참고할만한 자료(선택)
오프라인 진입을 막는 두 번째 지점인 로그인 API와 토큰 갱신 처리는 후속 이슈로 등록합니다. 이 이슈가 먼저 해결돼야 그쪽 동작을 실기기에서 확인할 수 있습니다.
어떤 버그인가요?
네트워크가 없는 상태로 앱을 실행하면 스플래시 화면에서 멈춥니다. 메인 화면도, 로그인 화면도 뜨지 않습니다.
어떤 상황에서 발생한 버그인가요?
라우팅이 업데이트 확인 성공 경로에만 걸려 있습니다.
MainActivity.onCreate()는checkForUpdate()만 호출하고,performRouting()은updateCheckResult옵저버에서 실행MainViewModel.checkForUpdate()의onFailure는Timber.e만 남기고 LiveData에 값을 넣지 않아 옵저버가 실행되지 않음AppUpdateRepositoryImpl.getUpdateInfo()가fetchAndActivate().await()를runCatching으로 감싸고,CheckForUpdateUseCase가mapCatching으로 실패를 전달isLoading은proceedToContent(),navigateToLogin()에서만 false가 되고 둘 다performRouting()이후에 호출예상 결과
업데이트 확인이 실패해도 라우팅이 진행되어 로딩 화면이 끝나고 다음 화면이 결정됩니다.
작업 범위
remote_config_defaults기본값 활용 또는 실패 이벤트 처리, 방식은 PR에서 결정)참고할만한 자료(선택)
오프라인 진입을 막는 두 번째 지점인 로그인 API와 토큰 갱신 처리는 후속 이슈로 등록합니다. 이 이슈가 먼저 해결돼야 그쪽 동작을 실기기에서 확인할 수 있습니다.