diff --git a/app/src/main/java/ru/myitschool/work/data/source/NetworkDataSource.kt b/app/src/main/java/ru/myitschool/work/data/source/NetworkDataSource.kt index 64eb4a0..af2f340 100644 --- a/app/src/main/java/ru/myitschool/work/data/source/NetworkDataSource.kt +++ b/app/src/main/java/ru/myitschool/work/data/source/NetworkDataSource.kt @@ -21,7 +21,7 @@ import ru.myitschool.work.data.source.dto.UserDto object NetworkDataSource { /** Поставь false, когда поднимешь настоящий бэкенд */ - private const val USE_STUB = true + private const val USE_STUB = false // Реальный клиент Ktor (для будущего) private val client by lazy { diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt b/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt index 923b90a..ad03e0c 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt @@ -3,11 +3,16 @@ package ru.myitschool.work.ui.screen import androidx.compose.animation.EnterTransition import androidx.compose.animation.ExitTransition import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.produceState +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import ru.myitschool.work.data.repo.AuthRepository +import ru.myitschool.work.domain.auth.GetSavedAuthCodeUseCase import ru.myitschool.work.ui.nav.AuthScreenDestination import ru.myitschool.work.ui.nav.BookScreenDestination import ru.myitschool.work.ui.nav.MainScreenDestination @@ -20,12 +25,30 @@ fun AppNavHost( modifier: Modifier = Modifier, navController: NavHostController = rememberNavController() ) { + // use case для проверки, есть ли сохранённый код + val getSavedAuthCodeUseCase = remember { + GetSavedAuthCodeUseCase(AuthRepository) + } + + // асинхронно определяем, с какого экрана стартовать + val startDestination by produceState(initialValue = null) { + val savedCode = getSavedAuthCodeUseCase() + value = if (savedCode.isNullOrBlank()) { + AuthScreenDestination + } else { + MainScreenDestination + } + } + + // Пока не знаем стартовый экран — ничего не рисуем (можно сюда потом воткнуть Splash) + val destination = startDestination ?: return + NavHost( modifier = modifier, enterTransition = { EnterTransition.None }, exitTransition = { ExitTransition.None }, navController = navController, - startDestination = AuthScreenDestination, + startDestination = destination, ) { composable { AuthScreen(navController = navController) diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt index b54ce5a..9746f58 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt @@ -40,7 +40,7 @@ fun AuthScreen( viewModel.actionFlow.collect { navController.navigate(MainScreenDestination) { // очищаем backstack до экрана авторизации - popUpTo(MainScreenDestination) { inclusive = false } + popUpTo(MainScreenDestination) { inclusive = true } } } }