У меня есть следующий метод -
private fun handleNewFriend(user: UserModel) {
lifecycleScope.launch {
withContext(Dispatchers.Default) {
val selfUsername = profileSharedPrefs.getString(USER_REGISTERED_EMAIL, "")!!
friendsViewModel.addUserFriend(UserFriendsModel(selfUsername, user.id))
}
friendsViewModel.addUsersFriendsErrorResults.observeOnce(requireActivity(), Observer { error ->
error?.let {
Toast.makeText(requireContext(), error.plus(" ").plus(getString(R.string.please_try_again)), Toast.LENGTH_LONG).show()
return@Observer
}
launch{
withContext(Dispatchers.Default) {
friendsViewModel.insertNewFriend(user)
}
navController.popBackStack()
}
})
}
}
addUserFriend()
добавляет данные в базу данных Firestore.
addUsersFriendsErrorResults
- это результаты живых данных, которые я наблюдаю из обратного вызова, давая мне обнуляемую строку, представляющую необязательную ошибку.
после того, как я получу результаты из живых данных, я открываю новую сопрограмму, что приводит к проблеме - только второй раз, когда я нажимаю кнопку, и функция получает в это место код действительно продолжается внутри запуска {} в конце.
Почему это происходит? что останавливает мой код при первом запуске?