Как дождаться ответа от сервера в Compose и выполнить исходя ответа навигацию
у меня есть окно входа в приложение, где пользователь должен ввести номер телефона. Если номер уже существует, то мы просим ввести пароль, если нет, то зарегистрироваться.
Навигация выглядит так:
@Composable
fun navigationMaterialExample() {
val navController = rememberNavController()
NavHost(navController, Destinations.Home) {
composable(Destinations.Home) {
selectCountryWithCountryCodeAndVerifyPhone(
goBack = { findNavController().navigateUp() },
myViewmodel = myViewmodel,
navController = navController
)
}
composable(Destinations.Login) {
ChoiceLoginScreen(
goBack = {..},
)
}
composable(Destinations.Registration) {
ChoiceRegistrationScreen(
goBack = {..},
)
}
}
Когда пользователь ввел номер телефона, он нажимает на кнопку, и посылается запрос на сервер
@Composable
fun selectCountryWithCountryCodeAndVerifyPhone(
goBack: () -> Unit,
myViewmodel: RegistrationViewModal,
navController : NavHostController) {
Scaffold(
..
){ contentPadding ->
Column(..) {
Text(text = verifyText)
TogiCountryCodePicker(
..
onValueChange = { myViewmodel.whenPhoneNumberChanged(it) }
)
MyTextButton(
//Отправляем запрос на сервер
click = {
//Данные передаю во viewmodel. Идёт обработка данных
myViewmodel.checkMobilePhone()
},
)
}
}
//Дожидаюсь ответа
val nextScreen = myViewmodel.therePhoneInDataBase.observeAsState()
if(nextScreen.value == "Registration"){
LaunchedEffect(Unit) {
println("Registration")
navController.navigate(RegistrationFragment.Destinations.ChoiceRegistrationScreen)
}
}
if(nextScreen.value == "Profile"){..}
}
Здесь есть проблема, Если пользователь вернется к Home выполниться условие if(nextScreen.value == "Registration") и он опять вернется к регистрации. Мне нужно обнулить данные во viewmodel тогда работает