forked from Olympic/NTO-2025-Android-TeamTask
work no server
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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<Any?>(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<AuthScreenDestination> {
|
||||
AuthScreen(navController = navController)
|
||||
|
||||
@@ -40,7 +40,7 @@ fun AuthScreen(
|
||||
viewModel.actionFlow.collect {
|
||||
navController.navigate(MainScreenDestination) {
|
||||
// очищаем backstack до экрана авторизации
|
||||
popUpTo(MainScreenDestination) { inclusive = false }
|
||||
popUpTo(MainScreenDestination) { inclusive = true }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user