From 655baf713ff090043abf9e2643162ac5345a2878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC?= Date: Fri, 5 Dec 2025 21:32:25 +0300 Subject: [PATCH] I made the logic for moving between screens and added stubs --- .../work/ui/screen/book/BookScreen.kt | 7 +++---- .../work/ui/screen/book/BookViewModel.kt | 20 ++++++++++--------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt index 47dd7ad..5772cd6 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt @@ -49,10 +49,9 @@ fun BookScreen( LaunchedEffect(Unit) { Log.d("BookScreen", "1") - viewModel.navigationFlow.collect { - // TODO настроить наконец это переход между экранами -// Log.d("BookScreen", "2") - when (it) { + viewModel.navigationFlow.collect { event -> + Log.d("navigation", "Event received: $event") + when (event) { BookNavigationEvent.NavigateToMain -> { Log.d("BookScreen", "3") navController.navigate(MainScreenDestination) diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookViewModel.kt b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookViewModel.kt index ce5a423..841bb54 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookViewModel.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookViewModel.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -18,21 +19,18 @@ import ru.myitschool.work.ui.screen.Booking class BookViewModel : ViewModel() { private val _uiState = MutableStateFlow(BookState.Loading) val uiState: StateFlow = _uiState.asStateFlow(); - - private val _actionFlow: MutableSharedFlow = MutableSharedFlow() - val actionFlow: SharedFlow = _actionFlow private val _navigationFlow = MutableSharedFlow() - val navigationFlow: SharedFlow = _navigationFlow + val navigationFlow: SharedFlow = _navigationFlow.asSharedFlow() init { loadData() } private fun loadData() { - _uiState.update { BookState.Loading } viewModelScope.launch(Dispatchers.IO) { + _uiState.update { BookState.Loading } val code = AuthRepository.getSavedCode() ?: run { - onIntent(BookIntent.ToAuthScreen) + _navigationFlow.emit(BookNavigationEvent.NavigateToAuth) Log.d("", "Go to AuthScreen") return@launch } @@ -90,7 +88,7 @@ class BookViewModel : ViewModel() { _uiState.update { BookState.Loading } BookRepository.sendData(intent.code, intent.booking).fold( onSuccess = { - _actionFlow.emit(Unit) + _navigationFlow.tryEmit(BookNavigationEvent.NavigateToMain) }, onFailure = { error -> BookState.Error(error.message ?: "Неизвестная ошибка") @@ -99,11 +97,15 @@ class BookViewModel : ViewModel() { } } BookIntent.BackToMainScreen -> { - _navigationFlow.tryEmit(BookNavigationEvent.NavigateToMain) + viewModelScope.launch { + _navigationFlow.emit(BookNavigationEvent.NavigateToMain) + } } BookIntent.LoadData -> loadData() BookIntent.ToAuthScreen -> { - _navigationFlow.tryEmit(BookNavigationEvent.NavigateToAuth) + viewModelScope.launch { + _navigationFlow.emit(BookNavigationEvent.NavigateToAuth) + } } } } -- 2.34.1