work no server

This commit is contained in:
2025-12-01 13:26:14 +06:00
parent ce20de0daa
commit 99c100929a
3 changed files with 26 additions and 3 deletions

View File

@@ -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 {

View File

@@ -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)

View File

@@ -40,7 +40,7 @@ fun AuthScreen(
viewModel.actionFlow.collect {
navController.navigate(MainScreenDestination) {
// очищаем backstack до экрана авторизации
popUpTo(MainScreenDestination) { inclusive = false }
popUpTo(MainScreenDestination) { inclusive = true }
}
}
}