1- package com.ninecraft.booket.feature.main. splash
1+ package com.ninecraft.booket.splash
22
33import androidx.compose.runtime.Composable
44import androidx.compose.runtime.LaunchedEffect
55import androidx.compose.runtime.getValue
66import androidx.compose.runtime.mutableStateOf
7+ import androidx.compose.runtime.rememberCoroutineScope
78import androidx.compose.runtime.setValue
89import com.ninecraft.booket.core.data.api.repository.AuthRepository
910import com.ninecraft.booket.core.data.api.repository.UserRepository
@@ -24,6 +25,7 @@ import dagger.assisted.AssistedFactory
2425import dagger.assisted.AssistedInject
2526import dagger.hilt.android.components.ActivityRetainedComponent
2627import kotlinx.coroutines.delay
28+ import kotlinx.coroutines.launch
2729
2830class SplashPresenter @AssistedInject constructor(
2931 @Assisted private val navigator : Navigator ,
@@ -33,10 +35,27 @@ class SplashPresenter @AssistedInject constructor(
3335
3436 @Composable
3537 override fun present (): SplashUiState {
38+ val scope = rememberCoroutineScope()
3639 val onboardingState by userRepository.onboardingState.collectAsRetainedState(initial = OnboardingState .IDLE )
3740 val autoLoginState by authRepository.autoLoginState.collectAsRetainedState(initial = AutoLoginState .IDLE )
3841 var isSplashTimeCompleted by rememberRetained { mutableStateOf(false ) }
3942
43+ fun checkTermsAgreement () {
44+ scope.launch {
45+ userRepository.getUserProfile()
46+ .onSuccess { userProfile ->
47+ if (userProfile.termsAgreed) {
48+ navigator.resetRoot(HomeScreen )
49+ } else {
50+ navigator.resetRoot(LoginScreen )
51+ }
52+ }
53+ .onFailure {
54+ navigator.resetRoot(LoginScreen )
55+ }
56+ }
57+ }
58+
4059 LaunchedEffect (Unit ) {
4160 delay(1000L )
4261 isSplashTimeCompleted = true
@@ -53,7 +72,7 @@ class SplashPresenter @AssistedInject constructor(
5372 OnboardingState .COMPLETED -> {
5473 when (autoLoginState) {
5574 AutoLoginState .LOGGED_IN -> {
56- navigator.resetRoot( HomeScreen )
75+ checkTermsAgreement( )
5776 }
5877
5978 AutoLoginState .NOT_LOGGED_IN -> {
@@ -72,11 +91,7 @@ class SplashPresenter @AssistedInject constructor(
7291 }
7392 }
7493
75- return SplashUiState (
76- idle = onboardingState == OnboardingState .IDLE || autoLoginState == AutoLoginState .IDLE ,
77- onboardingState = onboardingState,
78- autoLoginState = autoLoginState,
79- )
94+ return SplashUiState
8095 }
8196
8297 @CircuitInject(SplashScreen ::class , ActivityRetainedComponent ::class )
0 commit comments