@@ -2,8 +2,11 @@ package com.ninecraft.booket.feature.main.splash
22
33import androidx.compose.runtime.Composable
44import androidx.compose.runtime.getValue
5+ import com.ninecraft.booket.core.data.api.repository.AuthRepository
56import com.ninecraft.booket.core.data.api.repository.UserRepository
7+ import com.ninecraft.booket.core.model.AutoLoginState
68import com.ninecraft.booket.core.model.OnboardingState
9+ import com.ninecraft.booket.feature.screens.BottomNavigationScreen
710import com.ninecraft.booket.feature.screens.LoginScreen
811import com.ninecraft.booket.feature.screens.OnboardingScreen
912import com.ninecraft.booket.feature.screens.SplashScreen
@@ -20,35 +23,46 @@ import dagger.hilt.android.components.ActivityRetainedComponent
2023class SplashPresenter @AssistedInject constructor(
2124 @Assisted private val navigator : Navigator ,
2225 private val userRepository : UserRepository ,
26+ private val authRepository : AuthRepository ,
2327) : Presenter<SplashUiState> {
2428
2529 @Composable
2630 override fun present (): SplashUiState {
2731 val onboardingState by userRepository.onboardingState.collectAsRetainedState(initial = OnboardingState .IDLE )
32+ val autoLoginState by authRepository.autoLoginState.collectAsRetainedState(initial = AutoLoginState .IDLE )
2833
29- RememberedEffect (onboardingState) {
34+ RememberedEffect (onboardingState, autoLoginState ) {
3035 when (onboardingState) {
31- OnboardingState .IDLE -> {
32- // 초기 진입 상태
33- }
34-
3536 OnboardingState .NOT_COMPLETED -> {
3637 navigator.resetRoot(OnboardingScreen )
3738 }
3839
3940 OnboardingState .COMPLETED -> {
40- navigator.resetRoot(LoginScreen )
41+ when (autoLoginState) {
42+ AutoLoginState .LOGGED_IN -> {
43+ navigator.resetRoot(BottomNavigationScreen )
44+ }
45+
46+ AutoLoginState .NOT_LOGGED_IN -> {
47+ navigator.resetRoot(LoginScreen )
48+ }
49+
50+ AutoLoginState .IDLE -> {
51+ // 자동 로그인 상태를 기다리는 중
52+ }
53+ }
54+ }
55+
56+ OnboardingState .IDLE -> {
57+ // 온보딩 상태를 기다리는 중
4158 }
4259 }
4360 }
4461
4562 return SplashUiState (
46- idle = onboardingState == OnboardingState .IDLE ,
47- isOnboardingCompleted = when (onboardingState) {
48- OnboardingState .IDLE -> null
49- OnboardingState .NOT_COMPLETED -> false
50- OnboardingState .COMPLETED -> true
51- },
63+ idle = onboardingState == OnboardingState .IDLE || autoLoginState == AutoLoginState .IDLE ,
64+ onboardingState = onboardingState,
65+ autoLoginState = autoLoginState,
5266 )
5367 }
5468
0 commit comments