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 {
|
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 {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user