Я хочу написать функцию, которая возвращает список, содержащий идентификаторы документов.
Для чтения данных из базы данных (Cloud Firestore) я использую OnCompleteListener.
Это мой код до сих пор:
private fun getInvolvedChannels(): MutableList<String> {
var involvedList = mutableListOf<String>()
val currentUserId = FirebaseAuth.getInstance().currentUser?.uid
firestoreInstance.collection("users").document(currentUserId!!).collection("engagedChatChannels").get()
.addOnCompleteListener ( object : OnCompleteListener<QuerySnapshot> {
override fun onComplete(task: Task<QuerySnapshot>) {
task.result.documents.forEach {
val currentChannelId = it.id.toString()
involvedList.add(currentChannelId)
}
}
})
involvedList = buildChatChannelString(involvedList)
return involvedList
}
Чтение уже работает нормально. Проблема состоит в том, что список возвращается до того, как Слушатель хотя бы один красный Id. Так что он всегда возвращает пустой список. Где моя ошибка? Как я могу убедиться, что слушатель закончил, прежде чем я верну список?