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 { object NetworkDataSource {
/** Поставь false, когда поднимешь настоящий бэкенд */ /** Поставь false, когда поднимешь настоящий бэкенд */
private const val USE_STUB = true private const val USE_STUB = false
// Реальный клиент Ktor (для будущего) // Реальный клиент Ktor (для будущего)
private val client by lazy { 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.EnterTransition
import androidx.compose.animation.ExitTransition import androidx.compose.animation.ExitTransition
import androidx.compose.runtime.Composable 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.compose.ui.Modifier
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController 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.AuthScreenDestination
import ru.myitschool.work.ui.nav.BookScreenDestination import ru.myitschool.work.ui.nav.BookScreenDestination
import ru.myitschool.work.ui.nav.MainScreenDestination import ru.myitschool.work.ui.nav.MainScreenDestination
@@ -20,12 +25,30 @@ fun AppNavHost(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
navController: NavHostController = rememberNavController() 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( NavHost(
modifier = modifier, modifier = modifier,
enterTransition = { EnterTransition.None }, enterTransition = { EnterTransition.None },
exitTransition = { ExitTransition.None }, exitTransition = { ExitTransition.None },
navController = navController, navController = navController,
startDestination = AuthScreenDestination, startDestination = destination,
) { ) {
composable<AuthScreenDestination> { composable<AuthScreenDestination> {
AuthScreen(navController = navController) AuthScreen(navController = navController)

View File

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