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) + } } } }