Код не продолжает запуск внутренней сопрограммы внутри наблюдателя - PullRequest
0 голосов
/ 03 августа 2020

У меня есть следующий метод -

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 - это результаты живых данных, которые я наблюдаю из обратного вызова, давая мне обнуляемую строку, представляющую необязательную ошибку.

после того, как я получу результаты из живых данных, я открываю новую сопрограмму, что приводит к проблеме - только второй раз, когда я нажимаю кнопку, и функция получает в это место код действительно продолжается внутри запуска {} в конце.

Почему это происходит? что останавливает мой код при первом запуске?

...