forked from Olympic/NTO-2025-Android-TeamTask
Merge pull request 'I made the logic for moving between screens and added stubs' (#5) from student-15047/NTO-2025-Android-TeamTask:main into main
Reviewed-on: #5
This commit was merged in pull request #5.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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>(BookState.Loading)
|
||||
val uiState: StateFlow<BookState> = _uiState.asStateFlow();
|
||||
|
||||
private val _actionFlow: MutableSharedFlow<Unit> = MutableSharedFlow()
|
||||
val actionFlow: SharedFlow<Unit> = _actionFlow
|
||||
private val _navigationFlow = MutableSharedFlow<BookNavigationEvent>()
|
||||
val navigationFlow: SharedFlow<BookNavigationEvent> = _navigationFlow
|
||||
val navigationFlow: SharedFlow<BookNavigationEvent> = _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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user